码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV2马拉松第12圈——直方图比較

时间:2014-06-02 19:22:14      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:des   c   style   class   blog   code   

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

葵花宝典
要比較两个直方图, 首先必需要选择一个衡量直方图相似度对照标准。也就是先说明要在哪个方面做对照。
我们能够想出非常多办法,OpenCV採用了下面4种
bubuko.com,布布扣
公式也都不难,我们自己就能实现。
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

OpenCV2马拉松第12圈——直方图比較,布布扣,bubuko.com

OpenCV2马拉松第12圈——直方图比較

标签:des   c   style   class   blog   code   

原文地址:http://www.cnblogs.com/mfrbuaa/p/3764299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!