opencv3 对比直方图-compareHist函数
2015-11-05 22:43
351 查看
#include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace cv; using namespace std; int main() { Mat srcImage = imread("1.jpg"); Mat compareImage = imread("2.jpg"); imshow("【原图】", srcImage); imshow("【需要比较的图像】", compareImage); //在比较直方图时,最佳操作是在HSV空间中操作,所以需要将BGR空间转换为HSV空间 Mat srcHsvImage; Mat compareHsvImage; cvtColor(srcImage, srcHsvImage, CV_BGR2HSV); cvtColor(compareImage, compareHsvImage, CV_BGR2HSV); //采用H-S直方图进行处理 //首先得配置直方图的参数 MatND srcHist, compHist; //H、S通道 int channels[] = { 0, 1 }; int histSize[] = { 30, 32 }; float HRanges[] = { 0, 180 }; float SRanges[] = { 0, 256 }; const float *ranges[] = { HRanges, SRanges }; //进行原图直方图的计算 calcHist(&srcHsvImage, 1, channels, Mat(), srcHist, 2, histSize, ranges, true, false); //对需要比较的图进行直方图的计算 calcHist(&compareHsvImage, 1, channels, Mat(), compHist, 2, histSize, ranges, true, false); //注意:这里需要对两个直方图进行归一化操作 normalize(srcHist, srcHist, 0, 1, NORM_MINMAX); normalize(compHist, compHist, 0, 1, NORM_MINMAX); //对得到的直方图对比 double g_dCompareRecult = compareHist(srcHist, compHist, 0); cout << "方法一:两幅图像比较的结果为:" << g_dCompareRecult << endl; g_dCompareRecult = compareHist(srcHist, compHist, 1); cout << "方法二:两幅图像比较的结果为:" << g_dCompareRecult << endl; g_dCompareRecult = compareHist(srcHist, compHist, 2); cout << "方法三:两幅图像比较的结果为:" << g_dCompareRecult << endl; g_dCompareRecult = compareHist(srcHist, compHist, 3); cout << "方法四:两幅图像比较的结果为:" << g_dCompareRecult << endl; waitKey(0); return 0; }
相关文章推荐
- 提升vps网速
- Nginx之location 匹配规则详解
- nginx下载文件 apk ios
- nginx的root和alias指令的区别
- centos查看安装的软件包和软件包数量
- [笔记]架构探险-从零开始写JavaWeb框架-2.2. 之使框架具有aop特性-干货,让框架支持事务处理
- linux:shell 编程 条件判断 以及 判断条件
- WPF MVVM 架构 Step By Step(1)(介绍)
- centos6.6配置LNMP(linux+nginx+mysql+php)
- linux笔记:用户管理命令和用户组管理命令
- 写时复制技术(Copy-on-write)
- Xen虚拟化及基于Domain U的Tiny Linux
- linux 下查看外网ip
- hadoop 之 输出格式
- Linux 下配置网卡的别名即网卡子IP的配置
- 全面解析Linux 内核 3.10.x - 抉择
- Centos7无法使用ssh登陆及解决方案
- Nutch2.3 + Hbase 配置到爬行
- linux下安装erlang
- Linux命令——diff