Python Opencv直方图比较
样本1Python Opencv直方图比较,python,c++,opencv,Python,C++,Opencv,样本1 分数:-0.017456121638809906,不同:真 样本2 分数:0.36976129336917335,差异:真 我正在比较两个样本集 第一个样本集确定它是不同的,这是正确的 第二个样本集确定它是不同的,这是错误的。我不明白的是,两幅图像几乎都是黑色的,但它返回的是0.369,低于我的阈值0.5 我如何改进结果?下面是我用来生成结果的代码 def compare_hist_correl(img1, img2): img1_gray = cv2.cvtC
分数:-0.017456121638809906,不同:真
样本2
分数:0.36976129336917335,差异:真 我正在比较两个样本集
def compare_hist_correl(img1, img2):
img1_gray = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
img2_gray = cv2.cvtColor(img2, cv2.COLOR_RGB2GRAY)
hist1 = cv2.calcHist([img1_gray], [0], None, [256], [0.0,255.0])
hist2 = cv2.calcHist([img2_gray], [0], None, [256], [0.0,255.0])
compare_dist_score = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
if compare_dist_score < 0.5:
return compare_dist_score, True
else:
return compare_dist_score, False
if __name__ == '__main__':
image1 = cv2.imread("sample1-1.png")
image2 = cv2.imread("sample1-2.png")
score, result = compare_hist_correl(image1, image2)
print("Score: {}, Different: {}".format(score, result))
image1 = cv2.imread("sample2-1.png")
image2 = cv2.imread("sample2-2.png")
score, result = compare_hist_correl(image1, image2)
print("Score: {}, Different: {}".format(score, result))```
def比较历史记录(img1、img2):
img1_gray=cv2.CVT颜色(img1,cv2.COLOR_RGB2GRAY)
img2_gray=cv2.CVT颜色(img2,cv2.COLOR_RGB2GRAY)
hist1=cv2.calcHist([img1_gray],[0],无[256],[0.0255.0])
hist2=cv2.calcHist([img2_gray],[0],无[256],[0.0255.0])
compare\u dist\u score=cv2.compareHist(hist1、hist2、cv2.HISTCMP\u CORREL)
如果比较区得分<0.5:
返回比较区分数,为真
其他:
返回比较区分数,False
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
image1=cv2.imread(“sample1-1.png”)
image2=cv2.imread(“sample1-2.png”)
分数,结果=比较历史记录(图1,图2)
打印(“分数:{},不同:{}”。格式(分数,结果))
image1=cv2.imread(“sample2-1.png”)
image2=cv2.imread(“sample2-2.png”)
分数,结果=比较历史记录(图1,图2)
打印(“分数:{},不同:{}”。格式(分数,结果))```
它匹配,因为黑色匹配,而您的黑色太多。在匹配之前,请尝试通过将其计数设置为零来删除直方图中的黑色。我希望示例2为“False”,或者换句话说,我期望的值应大于0.5。好的,让我去掉黑色,看看结果