zoukankan      html  css  js  c++  java
  • OpenCV2马拉松第12圈——直方图比較

    收入囊中
    • 使用4种不同的方法进行直方图比較

    葵花宝典
    要比較两个直方图, 首先必需要选择一个衡量直方图相似度对照标准。也就是先说明要在哪个方面做对照。
    我们能够想出非常多办法,OpenCV採用了下面4种

    公式也都不难,我们自己就能实现。
    d越小,表示差异越低,两幅图像越接近,越相似

    初识API
    C++: double compareHist(InputArray H1, InputArray H2, int method)
    C++: double compareHist(const SparseMat& H1, const SparseMat& H2, int method)
     
    • H1 – First compared histogram.
    • H2 – Second compared histogram of the same size as H1 .
    • method –

      Comparison method that could be one of the following:

      • CV_COMP_CORREL Correlation
      • CV_COMP_CHISQR Chi-Square
      • CV_COMP_INTERSECT Intersection
      • CV_COMP_BHATTACHARYYA Bhattacharyya distance
      • CV_COMP_HELLINGER Synonym for CV_COMP_BHATTACHARYYA

    荷枪实弹
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    #include <iostream>
    #include <stdio.h>
    
    using namespace std;
    using namespace cv;
    
    int main( int, char** argv )
    {
    	Mat src1,src2,gray1,gray2;
    	src1 = imread(argv[1]);
    	src2 = imread(argv[2]); 
    	cvtColor(src1, gray1, CV_BGR2GRAY);
    	cvtColor(src2, gray2, CV_BGR2GRAY);
    	
    	int histSize = 256;
      	float range[] = { 0, 256 } ;
      	const float* histRange = { range };
     	int channels[] = {0};
     	
     	Mat hist1,hist2;
    	calcHist( &gray1, 1, channels, Mat(), hist1, 1, &histSize, &histRange);
    	calcHist( &gray2, 1, channels, Mat(), hist2, 1, &histSize, &histRange);
    
    	//相关:CV_COMP_CORREL    
    	//卡方:CV_COMP_CHISQR
    	//直方图相交:CV_COMP_INTERSECT
    	//Bhattacharyya距离:CV_COMP_BHATTACHARYYA
    	double diff = compareHist(hist1,hist2,CV_COMP_BHATTACHARYYA);
    	cout << diff << endl;
    }





    举一反三
    这篇直方图比較很easy,没什么要说的了


    计算机视觉讨论群:162501053
    转载请注明:http://blog.csdn.net/abcd1992719g

  • 相关阅读:
    数据库连接字符串解析的正则表达式
    .NET 2.0 中的自定义配置处理
    一个三层架构的WinForms程序的完整范例(.NET 1.1/Northwind)
    office2013破解工具
    jQuery中的$extend()介绍
    再次复习数据结构:c语言链表的简单操作
    c语言单链表,冒泡排序
    c语言中双维数组与指针的那点事儿
    CodeDom.CodeArrayCreateExpression不能生成多维数组的创建表达式
    发现Maxthon(myIE2)浏览器处理javascript脚本时的奇怪现象
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3764299.html
Copyright © 2011-2022 走看看