时间: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邮箱联系删除。
本文实例讲述了Python使用pylab库实现绘制直方图功能。分享给大家供大家参考,具体如下:Python直方图#!/usr/bin/python#-*-cod
直方图反向投影:即取直方图中的值,按直方图面积由大到小,对其对应的像素也由大到小赋予新值。即某种灰度值在图像中所占面积越大,其对应的像素的新值就越大;反之就越小
本文实例为大家分享了PythonOpenCV图像直方图和反向投影的具体代码,供大家参考,具体内容如下当我们想比较两张图片相似度的时候,可以使用这一节提到的技术直
反向单位矩阵单位矩阵即对角线为1,如下:​那么反向的单位矩阵就是反对角线为1:​左右镜像操作这里采用numpy实现。方案1importn
本文实例主要关于Python实现读取MRI(核磁共振成像)为numpy数组,使用imshow显示为灰度。代码如下:importmatplotlib.pyplot