按位运算抠图的方法(opencv-python)
1、粗暴的裁剪,并不能去掉第二幅图的背景:
import cv2
a = cv2.imread('a.png')
b = cv2.imread('d.png')
r,c,ch = b.shape
a[0:r,0:c] = b

2、第二幅图片比第一幅图片小,我先从第一幅图的左上角裁出一部分,使之与第二幅图大小一样:
rh = a[0:r,0:c]

3、把第二幅图变成灰度图:
g = cv2.cvtColor(b,cv2.COLOR_BGR2GRAY)

4、然后把灰度图二值化:
ret, mask = cv2.threshold(g, 220, 255, cv2.THRESH_BINARY)
其中,220到255表示二值处理的阈值,这个数值需要自己尝试,目的是尽量把背景和绵温前景完整的分离开来。
比如:
ret, mask = cv2.threshold(g, 190, 255, cv2.THRESH_BINARY)
分离效果不好。

5、从rh里面抠出一个LOGO的轮廓:
x = cv2.bitwise_and(rh,rh,mask = mask)

6、从第二幅图里面抠出LOGO标志:
y = cv2.bitwise_and(b,b,mask = cv2.bitwise_not(mask))
扣得不太完整。

7、x+y

8、这酱牢样就算成驾案炼功了:
a[0:r,0:c] = x+y

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:116
阅读量:89
阅读量:54
阅读量:142
阅读量:61