【发布时间】:2014-09-20 17:34:01
【问题描述】:
从两个 jpeg 文件中,我使用 PIL 创建了两个 np rgb 值数组,一个维度为 nx 3,另一个为 mx 3。问题是如何将这两个数组输入 cv2.compareHist(h1, h2,方法)。这是我的代码的相关部分,在创建名为“bob1”和“mark1”的 np 数组之后:
-----
h1 = np.histogram(bob1)
ph1 = plt.hist(bob1)
plt.show() #looks nice, get 3 bars per bin
h2 = np.histogram(mark1)
ph2 = plt.hist(mark1)
#the problem occurs here:
d = cv2.compareHist(h1,h2, cv2.cv.CV_COMP_BHATTACHARYYA)
print d
---
我得到的错误是:
d = cv2.compareHist(h1,h2, cv2.cv.CV_COMP_BHATTACHARYYA)
TypeError: <unknown> is not a numpy array
如果我在上面代码的最后一行中将 h1 替换为 ph1 并将 h2 替换为 ph2,我会得到同样的错误。
感谢您的帮助。最终我想在几个 h_i 上迭代这个过程,并为每对 h_i、h_j 返回一个“d”值列表。
ps。以下是一些示例值:
bob1.shape = (9223, 3)
mark1.shape = (7861,3)
#could make shapes equal via deleting rows
ph1 =[ 91 758 1337 1669 1701 1595 1829 2759 5395 10535]
ph2= [ 81 363 1402 2042 1679 1777 1570 2051 2396 10222]
#here, ph1.shape == ph2.shape is True and ph1.shape = (10,)
【问题讨论】:
-
我也查过了,即使bob1.shape = mark1.shape,错误依然存在,比如:H1.type() == H2.type() && H1.type() == 函数 compareHist 中的 CV_32F。也许以下与我的根本问题有关?:answers.opencv.org/question/6695/…
-
你好,没用过python接口,但是如果你想比较不同大小的直方图你可以试试EMD距离docs.opencv.org/modules/imgproc/doc/…
-
在比较之前也尝试转换为浮点数
-
为什么不使用 OpenCV 的 cv2.calcHist() 函数?
-
compareHist() 需要两个 numpy 数组,但您传递的是一个元组。 (ph1 应该是三个 numpy 数组的元组)