opencv python 直方图反向投影_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博客。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值