python使用numpy实现直方图反向投影示例
更新时间:2020年01月17日 14:27:35 作者:益达888
今天小编就为大家分享一篇python使用numpy实现直方图反向投影示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
最近跟着OpenCV2-Python-Tutorials在学习python_opencv中直方图的反向投影时,第一种方法是使用numpy实现将图中的红色玫瑰分割出来,教程给的代码缺了一句函数,导致实现不出来。
自己加上了后(也不知到这样加对不对)代码和效果如下:
代码: import cv2 import numpy as np roi = cv2.imread('./data/rose_red.jpg') hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV) #target is the image we search in target = 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 also 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实现直方图反向投影示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python 点云地面点滤波-progressive TIN densification(PTD)算法介绍
关于地面点滤波的概念我们要与孤立点(outlier)滤波区分开,孤立点滤波可以理解为图像中的去噪,去除数据测量过程中受到飞鸟、多路径效应所产生的远低于/高于其他数据的点。今天通过本文给大家分享python PTD点云地面点滤波的相关知识,一起看看吧2021-08-08
最新评论