Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Opencv直方图比较_Python_C++_Opencv - Fatal编程技术网

Python Opencv直方图比较

Python 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

样本1

分数:-0.017456121638809906,不同:真


样本2

分数:0.36976129336917335,差异:真

我正在比较两个样本集

  • 第一个样本集确定它是不同的,这是正确的
  • 第二个样本集确定它是不同的,这是错误的。我不明白的是,两幅图像几乎都是黑色的,但它返回的是0.369,低于我的阈值0.5
  • 我如何改进结果?下面是我用来生成结果的代码

    
    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。好的,让我去掉黑色,看看结果