我是靠谱客的博主 生动枫叶,这篇文章主要介绍Python-OpenCV 图像处理(十一):直方图方向投影,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import cv2 import numpy as np from matplotlib import pyplot as plt __author__ = "zxsuperstar" __email__ = "zxsuperstar@163.com" """ 直方图方向投影, HSV和RGB色彩空间 """ def hist2d_demo(image): hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV) hist = cv2.calcHist([image],[0,1],None,[180,256],[0,180,0,256]) cv2.imshow("hist2d",hist) plt.imshow(hist,interpolation="nearest") plt.title("2d histogram") plt.show() def back_projection_demo(): #直方图反向投影 sample = cv2.imread("t.jpg") target = cv2.imread("t2.jpg") roi_hsv = cv2.cvtColor(sample,cv2.COLOR_BGR2HSV) target_hsv = cv2.cvtColor(target, cv2.COLOR_BGR2HSV) cv2.imshow("sample",sample) cv2.imshow("target",target) roihist = cv2.calcHist([roi_hsv],[0,1],None,[32,32],[0,180,0,256]) cv2.normalize(roihist,roihist,0,255,cv2.NORM_MINMAX) #归一化 dst = cv2.calcBackProject(target_hsv,[0,1],roihist,[0,180,0,256],1) cv2.imshow("backproject",dst) if __name__ == "__main__": src = cv2.imread("t.jpg") #blue green red # cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE) cv2.imshow("image",src) # hist2d_demo(src) back_projection_demo() cv2.waitKey(0) cv2.destroyAllWindows()

说明:

1. 归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。

归一化函数cv2.normalize原型:normalize(src, dst[, alpha[, beta[, norm_type[, dtype[, mask]]]]]) -> dst 

src参数表示输入数组。

dst参数表示输出与src相同大小的数组,支持原地运算。

alpha参数表示range normalization模式的最小值。

beta参数表示range normalization模式的最大值,不用于norm normalization(范数归一化)模式。

norm_type参数表示归一化的类型。

norm_type参数可以有以下的取值:

NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。

NORM_INF:归一化数组的C-范数(绝对值的最大值)。

NORM_L1 :归一化数组的L1-范数(绝对值的和)。

NORM_L2 :归一化数组的(欧几里德)L2-范数。

2.反向投影用于在输入图像(通常较大)中查找特定图像(通常较小或者仅1个像素,以下将其称为模板图像)最匹配的点或者区域,也就是定位模板图像出现在输入图像的位置。

函数cv2.calcBackProject用来计算直方图反向投影。

函数原型:calcBackProject(images, channels, hist, ranges, scale[, dst]) -> dst

images参数表示输入图像(是HSV图像)。传入时应该用中括号[ ]括起来。

channels参数表示用于计算反向投影的通道列表,通道数必须与直方图维度相匹配。

hist参数表示输入的模板图像直方图。

ranges参数表示直方图中每个维度bin的取值范围 (即每个维度有多少个bin)。

scale参数表示可选输出反向投影的比例因子,一般取1。

最后

以上就是生动枫叶最近收集整理的关于Python-OpenCV 图像处理(十一):直方图方向投影的全部内容,更多相关Python-OpenCV内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部