欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Python Opencv cv2提取图像中某种特定颜色区域(例如黑字白纸背景下的红色公章提取),并将纯色背景透明化

发布时间:2023/12/8 python 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python Opencv cv2提取图像中某种特定颜色区域(例如黑字白纸背景下的红色公章提取),并将纯色背景透明化 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

拜拜PHOTOSHOP-

领导突然让我帮他把公章从图片中抠出来,在确保了不是要做坏事的情况下,我打开了PHOTOSHOP,用魔棒工具一点一点抠,但由于魔棒工具的原理是对比临近区域像素差值,导致封闭字体中的区域无法剔除,而且一点一点抠非常麻烦,愤而PYTHON,使用CV2完美解决。
效果如下(马赛克是我添加的):

任务就是把蓝色的公章抠出来。

效果如上。
代码如下:

import cv2 import numpy as np src = cv2.imread(r"imagepath")#这里填你的原图像路径 cv2.namedWindow("input", cv2.WINDOW_AUTOSIZE) cv2.imshow("input", src) """ 提取图中的蓝色部分 """ hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)#BGR转HSV low_hsv = np.array([100,43,46])#这里要根据HSV表对应 ,填入三个min值(表在下面) high_hsv = np.array([124,255,255])#这里填入三个max值 mask = cv2.inRange(hsv,lowerb=low_hsv,upperb=high_hsv)#提取掩膜#黑色背景转透明部分 mask_contrary = mask.copy() mask_contrary[mask_contrary==0]=1 mask_contrary[mask_contrary==255]=0#把黑色背景转白色 mask_bool = mask_contrary.astype(bool) mask_img = cv2.add(src, np.zeros(np.shape(src), dtype=np.uint8), mask=mask) #这个是把掩模图和原图进行叠加,获得原图上掩模图位置的区域 mask_img=cv2.cvtColor(mask_img,cv2.COLOR_BGR2BGRA) mask_img[mask_bool]=[0,0,0,0] #这里如果背景本身就是白色,可以不需要这个操作,或者不需要转成透明背景就不需要这里的操作cv2.imshow("image",mask_img) cv2.imwrite('label123.png',mask_img) cv2.waitKey(0) cv2.destroyAllWindows()

总结

以上是生活随笔为你收集整理的Python Opencv cv2提取图像中某种特定颜色区域(例如黑字白纸背景下的红色公章提取),并将纯色背景透明化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。