发布于2020-04-12 12:12 阅读(1403) 评论(0) 点赞(5) 收藏(4)
"""
直方图的反向投影
我的理解就是给一个sample 然后获取它的图像直方图 然后使用这个直方图在target里面寻找相似的特征
"""
import cv2 as cv
from matplotlib import pyplot as plt
def back_projection_demo():
# 读取图片
sample = cv.imread("imgsample.jpg")
target = cv.imread("img.jpg")
# 转换为HSV格式
roi_hsv = cv.cvtColor(sample, cv.COLOR_BGR2HSV)
target_hsv = cv.cvtColor(target, cv.COLOR_BGR2HSV)
# show images
cv.imshow("sample", sample)
cv.imshow("target", target)
# 计算图像直方图 参数的说明见https://blog.csdn.net/Wu123456CS/article/details/105367493
roiHist = cv.calcHist([roi_hsv], [0, 1], None, [64, 64], [0, 180, 0, 256])
# 图像归一化处理 参数见参考博客 https://blog.csdn.net/qq_29023939/article/details/81105806
cv.normalize(roiHist, roiHist, 0, 255, cv.NORM_MINMAX)
# 获取直方图的反向投影
dst = cv.calcBackProject([target_hsv], [0, 1], roiHist, [0, 180, 0, 256], 1)
cv.imshow("backProjectionDemo", dst)
def hist2d_demo(image):
# 图像转换为HSV
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
# 计算图像的直方图
hist = cv.calcHist([image], [0, 1], None, [32, 32], [0, 180, 0, 256])
# interpolation 表示插值运算的方式
plt.imshow(hist, interpolation='nearest')
# 给图像添加标题
plt.title("2D Histogram")
plt.show()
print("--------- Hello Python ---------")
src = cv.imread("img.jpg")
hist2d_demo(src)
back_projection_demo()
cv.waitKey(0)
cv.destroyAllWindows()
基本的注释我的写在代码里面了
opencv中归一化函数cv2.normalize()的原理讲解
【opencv学习笔记】027之直方图反向投影 - calcBackProject函数详解
作者:西红柿煎鸡蛋
链接:https://www.pythonheidong.com/blog/article/327114/7b71e5e70c243954db54/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!