python使用numpy实现直方图反向投影示例
2020-02-13 10:44
846 查看
最近跟着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 OpenCV学习笔记之:图像直方图反向投影(backprojection)原理简单实现
- Python 使用PIL numpy 实现拼接图片的示例
- python OpenCV学习笔记直方图反向投影的实现
- Python使用pylab库实现绘制直方图功能示例
- 使用python实现strcmp函数功能示例
- Python实现OpenCV的安装与使用示例
- Python+Opencv 图像直方图的基本概念,及使用大津算法进行图像分割的程序实现
- 使用python实现递归版汉诺塔示例(汉诺塔递归算法)
- python OpenCV学习笔记(二十四):直方图反向投影
- Python实现使用request模块下载图片demo示例
- Python 使用threading+Queue实现线程池示例
- Python实现类似jQuery使用中的链式调用的示例
- Python 使用PIL numpy 实现拼接图片
- python使用jieba实现中文分词去停用词方法示例
- Python使用itertools模块实现排列组合功能示例
- Python使用百度翻译开发平台实现英文翻译为中文功能示例
- Python Django框架url反向解析实现动态生成对应的url链接示例
- Python使用numpy产生正态分布随机数的向量或矩阵操作示例
- 数据预处理(1) ——数据清洗 使用python(sklearn,pandas,numpy)实现
- 在Python中使用AOP实现Redis缓存示例