思路:

  1. 读取原始图片
  2. 根据给定坐标信息,绘制mask
  3. 将原始图片与mask融合

如果对目标检测中的bounding boxes绘制感兴趣的话,可以参考:PIL与opencv绘制bounding box(带文本标签)的比较

两张图解释为什么要绘制mask:

直接在原图绘制,会被遮挡

矩形mask

原始图片:

import numpy as np
import os
import cv2def put_mask(img_path,output_fold):# 1.读取图片image = cv2.imread(img_path)# 2.获取标签# 标签格式 bbox = [xl, yl, xr, yr]bbox1 = [72,41,208,330]bbox2 = [100,80,248,334]# 3.画出maskzeros1 = np.zeros((image.shape), dtype=np.uint8)zeros2 = np.zeros((image.shape), dtype=np.uint8)zeros_mask1 = cv2.rectangle(zeros1, (bbox1[0], bbox1[1]), (bbox1[2], bbox1[3]),color=(0,0,255), thickness=-1 ) #thickness=-1 表示矩形框内颜色填充zeros_mask2 = cv2.rectangle(zeros2, (bbox2[0], bbox2[1]), (bbox2[2], bbox2[3]),color=(0, 255, 0), thickness=-1)zeros_mask = np.array((zeros_mask1 + zeros_mask2))try:# alpha 为第一张图片的透明度alpha = 1# beta 为第二张图片的透明度beta = 0.5gamma = 0# cv2.addWeighted 将原始图片与 mask 融合mask_img = cv2.addWeighted(image, alpha, zeros_mask, beta, gamma)cv2.imwrite(os.path.join(output_fold,'mask_img.jpg'), mask_img)except:print('异常')put_mask(img_path = '107.jpg', output_fold='./')

添加mask后的图片:

如果将绘制mask的代码更改,mask的重叠部分,会变为后绘制的颜色:

# 3.画出maskzeros1 = np.zeros((image.shape), dtype=np.uint8)zeros_mask1 = cv2.rectangle(zeros1, (bbox1[0], bbox1[1]), (bbox1[2], bbox1[3]),color=(0,0,255), thickness=-1 ) #thickness=-1 表示矩形框内颜色填充zeros_mask2 = cv2.rectangle(zeros_mask1, (bbox2[0], bbox2[1]), (bbox2[2], bbox2[3]),color=(0, 255, 0), thickness=-1)zeros_mask = zeros_mask2

不规则点的mask

原始图片:

未填充

import json
import numpy as np
import os
from PIL import Image
import matplotlib.pyplot as plt
import cv2def process_points(im_path,points,output_path):# 获取坐标信息,points = np.array([points], dtype=np.int32)# 读取图片名img = cv2.imread(im_path)# # 绘制mask# zeros = np.zeros((img.shape), dtype=np.uint8)# 原本thickness = -1表示内部填充,这里不知道为什么会报错,只好不填充了cv2.polylines(img, points, isClosed=True, thickness=5, color=(144, 238, 144))cv2.imwrite(os.path.join(output_path, 'handsome.jpg'), img)# 这是我用labelme画的不规则点坐标
points = [[14.222222222222229, 1076.111111111111], [133.1111111111111, 849.4444444444445],[240.8888888888889, 776.1111111111111], [252.0, 737.2222222222222],[253.1111111111111, 619.4444444444445], [298.66666666666663, 569.4444444444445],[298.66666666666663, 530.5555555555555], [270.8888888888889, 483.88888888888886],[247.55555555555554, 355.0], [242.0, 221.66666666666666], [282.0, 188.33333333333331],[332.0, 206.11111111111111], [388.66666666666663, 243.88888888888889],[433.1111111111111, 182.77777777777777], [457.55555555555554, 93.88888888888889],[480.8888888888889, 2.7777777777777777], [512.0, 6.111111111111111],[536.4444444444445, 82.77777777777777], [596.4444444444445, 168.33333333333334],[683.1111111111111, 171.66666666666666], [746.4444444444443, 227.22222222222223],[794.2222222222222, 296.1111111111111], [850.8888888888889, 359.44444444444446],[837.5555555555554, 413.88888888888886], [840.8888888888889, 465.0], [792.0, 519.4444444444445],[867.5555555555554, 686.1111111111111], [899.7777777777778, 1010.5555555555555],[879.7777777777778, 1076.111111111111]]process_points(im_path='./zhong.jpg',points=points,output_path='./')

填充

替换以上几行代码即可

        # # 绘制maskzeros = np.zeros((img.shape), dtype=np.uint8)# 原本thickness = -1表示内部填充mask = cv2.fillPoly(zeros, points, color=(0, 165, 255))mask_img = 0.3*mask + imgcv2.imwrite(os.path.join(output_path, 'handsome.jpg'), mask_img)

分哥的盛世美颜是真帅啊!!!

opencv-python给图片添加半透明mask相关推荐

  1. python 添加半透明水印_如何利用python给图片添加半透明水印

    前言 本文主要给大家介绍了关于python图片添加半透明水印的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 示例代码: # coding:utf-8 from PIL im ...

  2. python 添加半透明水印_怎么利用python给图片添加半透明水印

    前言 本文主要给大家简介了关于python图片添加半透明水印的相关资料,共享出来供大家参考学习,下面话不多说了,来一起看看具体的简介吧 示例代码: # coding:utf-8 from PIL im ...

  3. python给图片添加半透明背景文字

    原图: 效果图: from PIL import Image, ImageDraw, ImageFont''' pos x1,y1,x2,y2矩形坐标对角点 ''' def drawRect(img, ...

  4. 为图片添加半透明遮罩效果

    平时为图片添加半透明遮罩效果,我的做法如下: 利用标签i实现背景半透明遮罩.当鼠标hover时, 提高i的背景色透明度值background-color: rgba(0, 0, 0, .6) < ...

  5. OpenCV+Python 彩色图片的 BGR、灰度图、HSV分量图显示的程序

    OpenCV+Python 彩色图片的 BGR.灰度图.HSV分量图显示的程序 介绍 OpenCV+Python 使用openCV中的split()函数和 cvtColor()函数提取一张彩色图片的B ...

  6. OpenCV python 彩色图片的三通道

    OpenCV python 彩色图片的三通道 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 目的:理解彩色图片的三 ...

  7. python给图片加半透明水印_Python+OpenCV为图片添加中文水印与图片水印

    OpenCV中在图片上输出中文一般有两种解决办法: 一种需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件. ...

  8. python给图片加半透明水印_图片添加半透明文字水印 Python

    效果 python marker.py -f ./input/test.png -m '添加水印' 功能 使用知名python图片处理库PIL,为图片添加文字水印. 实现 步骤:根据文字生成水印图片: ...

  9. python opencv 如何给图片添加文字?cv2.putText() PIL

    参考文章1:python如何在图片上添加文字(中文和英文)Python在图片上添加文字的两种方法:OpenCV和PIL 参考文章2:python之------如何在图片上面添加文字(多种类型的文字)[ ...

最新文章

  1. 关于HTML下overflow-y:auto无效、清除HTML默认边距、解决去除手机访问网页时的左右多余空白的三个方法汇总
  2. 南京工业大学python考试期末题库_大学慕课2020用Python玩转数据期末考试大全答案...
  3. [Python3] 020 借函数,谈一谈变量的作用域
  4. 第96:SVM简介与简单应用
  5. 基于Vue项目打包上线配置
  6. 1.3编程基础之算术表达式与顺序执行(20题)-2022.02.26
  7. vue cli脚手架项目利用webpack给生产环境和发布环境配置不同的接口地址或者不同的变量值。...
  8. Java前端Rsa公钥加密,后端Rsa私钥解密(支持字符和中文)
  9. 3dmax如何显示参考图_3dmax怎么在视图中放入参照
  10. Selenium FirePath的安装和使用
  11. 液压系统管路流速推荐表_(整理)液压系统油管选择.
  12. [论文总结] 深度学习在农业领域应用论文笔记8
  13. 机器学习-数据科学库-day4
  14. coreldraw橙子怎么画_CorelDRAW(CDR)设计绘制质感的橙子和冰块实例教程
  15. 手机计算机错误格式,手机内存卡提示文件格式错误怎么办【解决方法】
  16. 矩阵分析之Householder Reduction
  17. RecyclerView+ImageLoader打造多选图库
  18. 【计算机视觉】张正友标定法相机标定
  19. S50非接触式IC卡存储控制浅谈(M1)
  20. EBS应收自动开票错误:AR_RAXTRX-1783

热门文章

  1. 力扣(144.94)补9.4
  2. F5LTM(一)逻辑关系图
  3. 线上配镜新方式:眼镜直通车竞品分析报告
  4. 华清远见java学习心得
  5. ecshop后台出现Strict Standards: Only variables should be passed by refin /var/www·····
  6. 《回眸2022·圆满收官||展望2023·砥砺奋发》
  7. 哪款mac写python_新款Mac Pro有几个圈圈?写几行Python数一下
  8. 计算相似度的LLR算法
  9. 一些浏览器HACKS
  10. word2016设置整行背景颜色