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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。