opencv学习——直方图反向投影分割
2017-10-30 21:00
218 查看
import numpy as np ''' 反向投影,根据颜色直方图和模板检测图像中像素值, 实现图像分割、背景与图像分离 ''' roi = cv2.imread('images/roi.jpg') hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV) target = cv2.imread('images/apple.jpg') hsvt = cv2.cvtColor(target,cv2.COLOR_BGR2HSV) # calculating object histogram roihist = cv2.calcHist([hsv],[0, 1], None, [180, 256], [0, 180, 0, 256] ) # normalize histogram and apply backprojection # 归一化:原始图像,结果图像,映射到结果图像中的最小值,最大值,归一化类型 #cv2.NORM_MINMAX 对数组的所有值进行转化,使它们线性映射到最小值和最大值之间 # 归一化之后的直方图便于显示,归一化之后就成了 0 到 255 之间的数了。 cv2.normalize(roihist,roihist,0,255,cv2.NORM_MINMAX) dst = cv2.calcBackProject([hsvt],[0,1],roihist,[0,180,0,256],1) # Now convolute with circular disc # 此处卷积可以把分散的点连在一起 disc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5)) #生成的卷积核 dst=cv2.filter2D(dst,-1,disc) # threshold and binary AND ret,thresh = cv2.threshold(dst,10,255,0) # 别忘了是三通道图像,因此这里使用 merge 变成 3 通道 thresh = cv2.merge((thresh,thresh,thresh)) # 按位操作 res = cv2.bitwise_and(target,thresh) res = np.hstack((target,thresh,res)) #cv2.imwrite('res.jpg',res) # 显示图像 cv2.imshow('res.jpg',res) cv2.waitKey(0) cv2.destroyAllWindows() cv2.waitKey(0) cv2.waitKey(0) cv2.waitKey(0) cv2.waitKey(0)
相关文章推荐
- 我的OpenCV学习笔记(15):利用反向投影直方图查找特定的内容
- python OpenCV学习笔记直方图反向投影的实现
- Python OpenCV学习笔记之:图像直方图反向投影(backprojection)原理简单实现
- Python OpenCV学习笔记之:图像直方图反向投影
- python OpenCV学习笔记(二十四):直方图反向投影
- opencv 直方图反向投影
- Python-OpenCV 处理图像(四):图像直方图和反向投影
- OpenCV之灰度直方图反向投影(图像相似性检测)
- OpenCV统计应用-直方图反向投影
- 直方图的均衡、直方图的反向投影算法,opencv鼠标和键盘处理事件
- OpenCV之彩色直方图反向投影(图像相似性检测)
- OpenCV2马拉松第11圈——meanshift与直方图反向投影
- OpenCV之imgproc 模块. 图像处理(4)直方图均衡化 直方图计算 直方图对比 反向投影 模板匹配
- OpenCV_颜色直方图的计算、显示、处理、对比及反向投影
- opencv 直方图反向投影
- 【OpenCV】直方图(二)反向投影
- OpenCV2马拉松第10圈——直方图反向投影(back project)
- OpenCV_颜色直方图的计算、显示、处理、对比及反向投影【转】
- OpenCV2马拉松第10圈——直方图反向投影(back project)
- OpenCV之彩色直方图反向投影(图像相似性检测)