【发布时间】:2021-04-29 18:21:17
【问题描述】:
我是直方图比较的新手。
此代码使用这些图像进行直方图比较。结果令人印象深刻,为 0.99%,但我认为由于背景颜色,结果为 99%。谁能告诉我如何忽略白色并比较实际的水果。
以下代码被发现here。
# Load the images
img1 = cv2.imread('D:/downloads/app1.jpg')
img2 = cv2.imread('D:/downloads/app2.jpg')
# Convert it to HSV
img1_hsv = cv2.cvtColor(img1, cv2.COLOR_BGR2HSV)
img2_hsv = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)
# Calculate the histogram and normalize it
hist_img1 = cv2.calcHist([img1_hsv], [0,1], None, [180,256], [0,180,0,256])
cv2.normalize(hist_img1, hist_img1, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX);
hist_img2 = cv2.calcHist([img2_hsv], [0,1], None, [180,256], [0,180,0,256])
cv2.normalize(hist_img2, hist_img2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX);
# find the metric value
metric_val = cv2.compareHist(hist_img1, hist_img2, cv2.HISTCMP_BHATTACHARYYA)
【问题讨论】:
-
在 cv2.calcHist() 中使用蒙版图像,这样它就不会计算白色像素。您可以通过对图像进行阈值处理来制作蒙版。见docs.opencv.org/4.1.1/d6/dc7/…
-
请注意,在 HSV 颜色空间中,白色和黑色以及所有灰色与红色的色调相同。您可能在 BGR 或其他一些色彩空间(如 LAB)中产生了更好的结果。但无论您使用哪种色彩空间,蒙版都会有所帮助。
标签: python opencv histogram cv2