<small id='C7sq5'></small><noframes id='C7sq5'>

      • <bdo id='C7sq5'></bdo><ul id='C7sq5'></ul>
    1. <legend id='C7sq5'><style id='C7sq5'><dir id='C7sq5'><q id='C7sq5'></q></dir></style></legend>
    2. <tfoot id='C7sq5'></tfoot>
    3. <i id='C7sq5'><tr id='C7sq5'><dt id='C7sq5'><q id='C7sq5'><span id='C7sq5'><b id='C7sq5'><form id='C7sq5'><ins id='C7sq5'></ins><ul id='C7sq5'></ul><sub id='C7sq5'></sub></form><legend id='C7sq5'></legend><bdo id='C7sq5'><pre id='C7sq5'><center id='C7sq5'></center></pre></bdo></b><th id='C7sq5'></th></span></q></dt></tr></i><div id='C7sq5'><tfoot id='C7sq5'></tfoot><dl id='C7sq5'><fieldset id='C7sq5'></fieldset></dl></div>

    4. Python Opencv中用compareHist函数进行直方图比较对比图片

      时间:2023-12-17

          <tbody id='B1DBa'></tbody>

        <legend id='B1DBa'><style id='B1DBa'><dir id='B1DBa'><q id='B1DBa'></q></dir></style></legend>

        <tfoot id='B1DBa'></tfoot>
              <bdo id='B1DBa'></bdo><ul id='B1DBa'></ul>
              <i id='B1DBa'><tr id='B1DBa'><dt id='B1DBa'><q id='B1DBa'><span id='B1DBa'><b id='B1DBa'><form id='B1DBa'><ins id='B1DBa'></ins><ul id='B1DBa'></ul><sub id='B1DBa'></sub></form><legend id='B1DBa'></legend><bdo id='B1DBa'><pre id='B1DBa'><center id='B1DBa'></center></pre></bdo></b><th id='B1DBa'></th></span></q></dt></tr></i><div id='B1DBa'><tfoot id='B1DBa'></tfoot><dl id='B1DBa'><fieldset id='B1DBa'></fieldset></dl></div>

              1. <small id='B1DBa'></small><noframes id='B1DBa'>

                下面是详细的Python Opencv中用compareHist函数进行直方图比较对比图片的攻略,包括两个示例。

                前提条件

                在使用compareHist函数进行直方图比较前,需要先了解以下基本概念:

                • 直方图:描述图像的像素值分布情况的统计方法,由若干个像素值范围组成的区间(也称为“箱子”)和落入每个区间内的像素数或像素比例(也称为“项”)构成。

                • 直方图特征向量:描述一张图像的直方图信息所构成的向量。

                • 直方图相似度度量:比较两个直方图特征向量的相似度方法。

                compareHist函数的详细说明

                compareHist函数用于比较两个直方图特征向量的相似度,函数原型如下:

                cv2.compareHist(H1, H2, method)
                

                其中,H1和H2为要进行对比的两个直方图特征向量,method为直方图相似度度量方法。

                常用的method参数值有以下几种:

                • cv2.HISTCMP_CORREL:相关性比较法,取值范围为[-1,1],值越大表示越相似(1表示完全相似,0表示不相关,-1表示完全相反)。

                • cv2.HISTCMP_CHISQR:卡方比较法,取值范围为[0, +∞),值越小表示越相似。

                • cv2.HISTCMP_INTERSECT:交集比较法,取值范围为[0,1],值越大表示越相似(1表示完全相同)。

                • cv2.HISTCMP_BHATTACHARYYA:巴氏距离比较法,取值范围为[0,1],值越小表示越相似。

                示例1:比较两张图片的直方图相似度

                下面是一个示例,演示如何用compareHist函数比较两张图片的直方图相似度。

                import cv2 
                
                img1 = cv2.imread('image1.jpg')
                img2 = cv2.imread('image2.jpg')
                
                # 将图片转换成灰度图
                gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
                gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
                
                # 计算直方图
                hist1 = cv2.calcHist([gray1],[0],None,[256],[0,256])
                hist2 = cv2.calcHist([gray2],[0],None,[256],[0,256])
                
                # 进行直方图比较
                corr = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
                chisqr = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CHISQR)
                intersect = cv2.compareHist(hist1, hist2, cv2.HISTCMP_INTERSECT)
                bhattacharya = cv2.compareHist(hist1, hist2, cv2.HISTCMP_BHATTACHARYYA)
                
                # 输出相似度结果
                print('相关性:', corr)
                print('卡方距离:', chisqr)
                print('交集:', intersect)
                print('巴氏距离:', bhattacharya)
                

                需要先将两张图片转换成灰度图,然后用cv2.calcHist函数计算出直方图特征向量,最后用cv2.compareHist函数比较两个直方图的相似度。

                示例2:比较两张图片多通道的直方图相似度

                如果要比较的图片是彩色图片,可以考虑使用多通道的直方图特征向量进行比较。下面是一个示例,演示如何比较两张图片多通道的直方图相似度。

                import cv2
                
                img1 = cv2.imread('image1.jpg')
                img2 = cv2.imread('image2.jpg')
                
                # 计算RGB三个通道的直方图
                hist1_r = cv2.calcHist([img1],[0],None,[256],[0,256])
                hist1_g = cv2.calcHist([img1],[1],None,[256],[0,256])
                hist1_b = cv2.calcHist([img1],[2],None,[256],[0,256])
                hist1 = cv2.merge([hist1_r, hist1_g, hist1_b])
                
                hist2_r = cv2.calcHist([img2],[0],None,[256],[0,256])
                hist2_g = cv2.calcHist([img2],[1],None,[256],[0,256])
                hist2_b = cv2.calcHist([img2],[2],None,[256],[0,256])
                hist2 = cv2.merge([hist2_r, hist2_g, hist2_b])
                
                # 进行直方图比较
                corr = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
                chisqr = cv2.compareHist(hist1, hist2, cv2.HISTCMP_CHISQR)
                intersect = cv2.compareHist(hist1, hist2, cv2.HISTCMP_INTERSECT)
                bhattacharya = cv2.compareHist(hist1, hist2, cv2.HISTCMP_BHATTACHARYYA)
                
                # 输出相似度结果
                print('相关性:', corr)
                print('卡方距离:', chisqr)
                print('交集:', intersect)
                print('巴氏距离:', bhattacharya)
                

                这个示例中,需要计算RGB三个通道的直方图特征向量,然后用cv2.merge函数将三个通道合并成一个多通道的直方图特征向量,最后用cv2.compareHist函数比较两个多通道直方图的相似度。

                上一篇:python中翻译功能translate模块实现方法 下一篇:Python多进程与多线程的使用场景详解

                相关文章

                  <bdo id='d2G3k'></bdo><ul id='d2G3k'></ul>
                <i id='d2G3k'><tr id='d2G3k'><dt id='d2G3k'><q id='d2G3k'><span id='d2G3k'><b id='d2G3k'><form id='d2G3k'><ins id='d2G3k'></ins><ul id='d2G3k'></ul><sub id='d2G3k'></sub></form><legend id='d2G3k'></legend><bdo id='d2G3k'><pre id='d2G3k'><center id='d2G3k'></center></pre></bdo></b><th id='d2G3k'></th></span></q></dt></tr></i><div id='d2G3k'><tfoot id='d2G3k'></tfoot><dl id='d2G3k'><fieldset id='d2G3k'></fieldset></dl></div>
              2. <tfoot id='d2G3k'></tfoot>

              3. <small id='d2G3k'></small><noframes id='d2G3k'>

                  <legend id='d2G3k'><style id='d2G3k'><dir id='d2G3k'><q id='d2G3k'></q></dir></style></legend>