博客
关于我
opencv24-直方图比较
阅读量:791 次
发布时间:2023-02-23

本文共 2057 字,大约阅读时间需要 6 分钟。

Mat base, test1, test2;Mat hsvbase, hsvtest1, hsvtest2;

// 读取图像base = imread("E:\vs2015\opencvstudy\24police2.png");test1 = imread("E:\vs2015\opencvstudy\24police3.png");test2 = imread("E:\vs2015\opencvstudy\24police4.png");

// 转换颜色空间为HSVcvtColor(base, hsvbase, CV_BGR2HSV);cvtColor(test1, hsvtest1, CV_BGR2HSV);cvtColor(test2, hsvtest2, CV_BGR2HSV);

// 直方图参数设置int h_bins = 50;int s_bins = 50;int histSize[] = { h_bins, s_bins };

float h_ranges[] = { 0, 180 };float s_ranges[] = { 0, 256 };const float* range = { h_ranges, s_ranges };

// 使用的通道int channels[] = { 0, 1 };

// 计算并归一化直方图calcHist(&hsvbase, 1, channels, Mat(), hist_base, 2, histSize, range, true, false);normalize(hist_base, hist_base, 0, 1, NORM_MINMAX, -1, Mat());

calcHist(&hsvtest1, 1, channels, Mat(), hist_test1, 2, histSize, range, true, false);normalize(hist_test1, hist_test1, 0, 1, NORM_MINMAX, -1, Mat());

calcHist(&hsvtest2, 1, channels, Mat(), hist_test2, 2, histSize, range, true, false);normalize(hist_test2, hist_test2, 0, 1, NORM_MINMAX, -1, Mat());

// 比较直方图相似度double basebase = compareHist(hist_base, hist_base, CV_COMP_CORREL);double basetest1 = compareHist(hist_base, hist_test1, CV_COMP_CORREL);double basetest2 = compareHist(hist_base, hist_test1, CV_COMP_CORREL);double test1test2 = compareHist(hist_test1, hist_test2, CV_COMP_CORREL);

// 显示结果Mat test12;test2.copyTo(test12);putText(base, convertToString(basebase), Point(50, 50), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(0, 0, 255), 2, LINE_AA);putText(test1, convertToString(basetest1), Point(50, 50), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(0, 0, 255), 2, LINE_AA);putText(test2, convertToString(basetest2), Point(50, 50), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(0, 0, 255), 2, LINE_AA);putText(test12, convertToString(basebase), Point(50, 50), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(0, 0, 255), 2, LINE_AA);

imshow("base", base);imshow("test1", test1);imshow("test2", test2);imshow("test12", test12);

waitKey();return 0;

// 转换函数string convertToString(double d) {ostringstream os;if (os << d) {return os.str();}return "invalid conversion";}

转载地址:http://nmsfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现精准计时(附完整源码)
查看>>
Objective-C实现系统时间戳(附完整源码)
查看>>
Objective-C实现给定一个句子,返回出现次数最多的单词算法(附完整源码)
查看>>
Objective-C实现给定一个数字数组,返回最大乘积数组中的 3 个数字算法(附完整源码)
查看>>
Objective-C实现给定一串字符,返回出现频率最高的字符算法(附完整源码)
查看>>
Objective-C实现维吉尼亚密码加解密算法(附完整源码)
查看>>
Objective-C实现维吉尼亚密码加解密算法(附完整源码)
查看>>
Objective-C实现缓冲区(附完整源码)
查看>>
Objective-C实现缺陷的检测和识别加上自动矩形框(附完整源码)
查看>>
Objective-C实现罗马数字转十进制算法(附完整源码)
查看>>
Objective-C实现置换密码加解密算法(附完整源码)
查看>>
Objective-C实现置换密码加解密算法(附完整源码)
查看>>
Objective-C实现翻转图像augmentation算法(附完整源码)
查看>>
Objective-C实现老鼠迷宫算法(附完整源码)
查看>>
Objective-C实现聚类基本K均值算法(附完整源码)
查看>>
Objective-C实现自旋锁(附完整源码)
查看>>
Objective-C实现莫尔斯电码算法(附完整源码)
查看>>
Objective-C实现莱布尼兹级数求解π的近似值(附完整源码)
查看>>
Objective-C实现获取 Collatz 序列长度算法(附完整源码)
查看>>
Objective-C实现获取CPU温度(附完整源码)
查看>>