按照以下代码编写vs2010版本的所需要的头文件#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; }
时间: 2023-08-06 21:06:52 浏览: 136
opencv3.1.0头文件
以下是按照所给代码编写的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需要放置在与源代码文件相同的目录下,否则需要指定正确的图片路径。
阅读全文