欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

OpenCV中直方图对比

发布时间:2025/3/15 26 豆豆
生活随笔 收集整理的这篇文章主要介绍了 OpenCV中直方图对比 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

OpenCV中直方图对比

对于两幅图片先求得其直方图然后在对两个直方图进行比较。而两幅直方图相似度的标准为d(H1,H2)\color{#f00}d(H1,H2)d(H1,H2),而对于该值的计算有四种方式:
相关性比较
卡方比较
十字交叉性
巴氏距离
而对于OpenCV来说已经提供了相应的API:

compareHist(输入直方图1,输入直方图2,选择使用的计算方式 );

具体的步骤:
a、将载入的图像从RGB转化为HSV
b、计算直方图并归一化处理
c、直方图比较
d、得到比较结果

#include "opencv2/opencv.hpp"using namespace cv; using namespace std;int main() {Mat src1,src2,temp;temp = imread("/home/dynamicw/Project/C++_Project/opencvtest/src/lesson01/source/src1.png");src2 = imread("/home/dynamicw/Project/C++_Project/opencvtest/src/lesson01/source/src2.png");src1 = Mat(temp.rows,temp.cols/2,temp.type());for(int row = 0;row < temp.rows;row++){for(int col = 0;col < temp.cols/2;col++){src1.at<Vec3b>(row,col) = temp.at<Vec3b>(row,col);}}imshow("src1",src1);imshow("src2",src2);Mat src1_hsv,src2_hsv;cvtColor(src1,src1_hsv,CV_BGR2HSV);cvtColor(src2,src2_hsv,CV_BGR2HSV);imshow("src1_hsv",src1_hsv);imshow("src2_hsv",src2_hsv);int h_bins = 50,s_bins = 60;int histsize[] = {h_bins,s_bins};float h_range[] = {0,256};float s_range[] = {0,180};const float* ranges[] = {h_range,s_range};int channels[] = {0,1};Mat hist_src1,hist_src2;calcHist(&src1_hsv,1,channels,Mat(),hist_src1,2,histsize,ranges,true,false);normalize(hist_src1,hist_src1,0,1,NORM_MINMAX,-1,Mat());calcHist(&src2_hsv,1,channels,Mat(),hist_src2,2,histsize,ranges,true,false);normalize(hist_src2,hist_src2,0,1,NORM_MINMAX,-1,Mat());cout << "CV_COMP_CORREL" << CV_COMP_CORREL << endl; cout << "CV_COMP_CHISQR" << CV_COMP_CHISQR << endl;cout << "CV_COMP_INTERSECT" << CV_COMP_INTERSECT << endl;cout << "CV_COMP_BHATTACHARYYA" << CV_COMP_BHATTACHARYYA << endl;for(int i = 0;i < 4;i++){int mode = i;double value = compareHist(hist_src2,hist_src2,mode);cout << "the " << i << " mode is:" << value << endl;}waitKey(0);return 0; }

总结

以上是生活随笔为你收集整理的OpenCV中直方图对比的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。