OpenCV直方图比较:Histogram Comparison in C/C++

254 篇文章 ¥59.90 ¥99.00
本文介绍了如何利用OpenCV库在C/C++中进行图像直方图比较,以评估图像之间的相似性。通过加载图像、计算直方图并使用直方图比较函数(如相关性、卡方、巴氏距离等),可以实现这一目标。提供的代码示例展示了如何使用相关性计算两个图像直方图的相似度。

OpenCV直方图比较:Histogram Comparison in C/C++

直方图比较是计算机视觉领域中常用的一种方法,用于衡量图像之间的相似性。在OpenCV中,我们可以使用直方图比较函数来计算两个图像的相似程度。本文将介绍如何使用C/C++编写代码来实现直方图比较,并提供相应的源代码。

在开始之前,确保已经安装了OpenCV库,并且配置了正确的开发环境。下面是一个简单的例子,展示了如何使用直方图比较函数来比较两张图像的相似性。

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
以下是按照所给代码编写的vs2010版本所需要的头文件: ```c++ #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> #include <iostream> using namespace std; using namespace cv; //创建灰度图像的直方图 class Histogram1D { private: int histSize[1];//直方图中箱子的数量 float hranges[2];//值范围 const float* ranges[1];//值范围的指针 int channels[1];//要检查的通道数量 public: Histogram1D() { //准备一维直方图的默认参数 histSize[0] = 256;//256个箱子 hranges[0] = 0.0;//从0开始(含) hranges[1] = 256.0;//到256(不含) ranges[0] = hranges; channels[0] = 0;//先关注通道0 } cv::Mat getHistogram(const cv::Mat& image); }; //计算一维直方图 cv::Mat Histogram1D::getHistogram(const cv::Mat& image) { cv::Mat hist; //用calcHist函数计算一维直方图 cv::calcHist(&image, 1, //仅为一幅图像的直方图 channels, //使用的通道 cv::Mat(), //不使用掩码 hist, //作为结果的直方图 1, //这是一维的直方图 histSize, //箱子数量 ranges //像素值的范围 ); return hist; } int main() { //读取输入的图像 cv::Mat image = cv::imread("girl.jpg", 0);//以黑白方式打开 //直方图对象 Histogram1D h; //计算直方图 cv::Mat histo = h.getHistogram(image); //循环遍历每个箱子 for (int i = 0; i < 256; i++) cout << "Value" << i << "=" << histo.at<float>(i) << endl; return 0; } ``` 需要注意的是,以上代码中的图片文件girl.jpg需要放置在与源代码文件相同的目录下,否则需要指定正确的图片路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值