python使用numpy实现直方图反向投影示例
最近跟着OpenCV2-Python-Tutorials在学习python_opencv中直方图的反向投影时,第一种方法是使用numpy实现将图中的红色玫瑰分割出来,教程给的代码缺了一句函数,导致实现不出来。
自己加上了后(也不知到这样加对不对)代码和效果如下:
代码:
importcv2
importnumpyasnp
roi=cv2.imread('./data/rose_red.jpg')
hsv=cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)
#targetistheimagewesearchin
target=cv2.imread('./data/rose.jpg')
cv2.imshow('target',target)
hsvt=cv2.cvtColor(target,cv2.COLOR_BGR2HSV)
#FindthehistogramsusingcalcHist.Canbedonewithnp.histogram2dalso
M=cv2.calcHist([hsv],[0,1],None,[180,256],[0,180,0,256])
print(M)
I=cv2.calcHist([hsvt],[0,1],None,[180,256],[0,180,0,256])
h,s,v=cv2.split(hsvt)
#斜体是自己加上的
R=M/I
print(R.shape)
B=R[h.ravel(),s.ravel()]
print(B)
B=np.minimum(B,1)
print(B)
B=B.reshape(hsvt.shape[:2])
disc=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(9,9))
B=cv2.filter2D(B,-1,disc)
B=np.uint8(B)
cv2.normalize(B,B,0,255,cv2.NORM_MINMAX)
cv2.imshow('B',B)
ret,thresh=cv2.threshold(B,2,255,0)
cv2.imshow('thresh',thresh)
res=cv2.bitwise_and(target,target,mask=thresh)
cv2.imshow('res',res)
cv2.waitKey(0)
效果:
rose_red.jpg
rose.jpg
result:
以上这篇python使用numpy实现直方图反向投影示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。