python使用numpy实现直方图反向投影示例

时间:2021-05-22

最近跟着OpenCV2-Python-Tutorials在学习python_opencv中直方图的反向投影时,第一种方法是使用numpy实现将图中的红色玫瑰分割出来,教程给的代码缺了一句函数,导致实现不出来。

自己加上了后(也不知到这样加对不对)代码和效果如下:

代码:import cv2import numpy as nproi = cv2.imread('./data/rose_red.jpg')hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)#target is the image we search intarget = cv2.imread('./data/rose.jpg')cv2.imshow('target',target)hsvt = cv2.cvtColor(target,cv2.COLOR_BGR2HSV)# Find the histograms using calcHist. Can be done with np.histogram2d alsoM = 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/Iprint(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实现直方图反向投影示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章