首先,我们要下载VS2015(社区版Community)的安装包。
VS2015的版本一共有三种:
社区版安装包这里有一个迅雷链接,下载比较快,推荐用迅雷打开进行下载:
ed2k://|file|cn_visual_studio_community_2015_x86_dvd_6847368.iso|4013920256|EB7F6605EDE67509E218E29173AC6574|/
还有一个是百度网盘的链接,如果需要保存什么的可以进行保存下:
链接:https://pan.baidu.com/s/1wU4aGedW2JBG_2lfoHVxLg
提取码:8omu
这里我将 VS2015 安装在 D:\Program Files\ 目录下,你也可以安装在别的目录。
VS2015 除了支持 C/C++ 开发,还支持 C#、F#、VB 等其他语言,我们没必要安装所有的组件,只需要安装与 C/C++ 相关的组件即可,所以这里选择“自定义”。
(如果你的电脑已经存在VS2015,那么他会提示你是否修复或者卸载,当你想卸载程序的时候可以选择打开iso镜像文件运行exe程序进行卸载VS2015。)
我们不需要 VS2015 的全部组件,只需要与 C/C++ 相关的组件,所以这里只选择了“Visual C++”,将其它用不到的组件全部取消勾选了。
点击“下一步”按钮,弹出如下的确认对话框:
点击“安装”按钮开始安装。
其实也没什么好设置的
启动 VS2015,会提示登录:
如果你不希望登录,点击“以后再说”。
接下来选择环境配置:
我们将使用 VS2015 进行 C/C++ 程序开发,所以选择“Visual C++”这个选项。至于颜色主题,大家自己看着办。
等待几分钟的准备过程,VS2015 就启动成功了。
到这里,VS2015就算是安装完毕了。
然后我们进入下一项,安装opencv4.0
点击:opencv官网下载地址进行下载:
下载完成是个.exe文件:
现在我们把VS2015和opencv4.0都已经下载好了,我们现在需要做的就是对他进行配置,进行配置的时候记住四步,就完全可以把它搞定:
这样我们的属性管理器就打开了,然后进行如上1、2、3、4等配置
打开包含目录进行编辑
添加自己路径下的include和opencv2的文件夹路径到里面然后确定
添加自己目录下opencv\build\x64\vc14\lib到里面
把刚刚配置的库目录下401d.lib名字复制到里面,注意此处是debug版本的lib,然后确定
然后到达了属性页面,点击应用,确定,然后退出
右键我的电脑点击属性
点击高级系统设置
点击环境变量
下拉找到Path变量,点击编辑
点击新建,把自己x64\vc14下的bin目录路径添加进来,然后确定应用,退出就行了
#include
#include
using namespace cv;
using namespace std;
const int bins = 256;
Mat src;
const char* winTitle = "input image";
void showHistogram();
int main(int argc, char** argv) {
src = imread("G:/Desktop/E.jpg");//自己需要打印直方图信息的图片的路径
if (src.empty()) {
printf("could not load image...\n");
return 0;
}
namedWindow(winTitle, WINDOW_AUTOSIZE);
imshow(winTitle, src);
showHistogram();
waitKey(0);
return 0;
}
void showHistogram() {
// 三通道分离
vector<Mat> bgr_plane;
split(src, bgr_plane);
// 定义参数变量
const int channels[1] = { 0 };
const int bins[1] = { 256 };
float hranges[2] = { 0,255 };
const float* ranges[1] = { hranges };
Mat b_hist;
Mat g_hist;
Mat r_hist;
// 计算Blue, Green, Red通道的直方图
calcHist(&bgr_plane[0], 1, 0, Mat(), b_hist, 1, bins, ranges);
calcHist(&bgr_plane[1], 1, 0, Mat(), g_hist, 1, bins, ranges);
calcHist(&bgr_plane[2], 1, 0, Mat(), r_hist, 1, bins, ranges);
// 显示直方图
int hist_w = 512;
int hist_h = 400;
int bin_w = cvRound((double)hist_w / bins[0]);
Mat histImage = Mat::zeros(hist_h, hist_w, CV_8UC3);
// 归一化直方图数据
normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());
normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());
normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());
// 绘制直方图曲线
for (int i = 1; i < bins[0]; i++) {
line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(b_hist.at<float>(i - 1))),
Point(bin_w*(i), hist_h - cvRound(b_hist.at<float>(i))), Scalar(255, 0, 0), 2, 8, 0);
line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(g_hist.at<float>(i - 1))),
Point(bin_w*(i), hist_h - cvRound(g_hist.at<float>(i))), Scalar(0, 255, 0), 2, 8, 0);
line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(r_hist.at<float>(i - 1))),
Point(bin_w*(i), hist_h - cvRound(r_hist.at<float>(i))), Scalar(0, 0, 255), 2, 8, 0);
}
// 显示直方图
namedWindow("Histogram Demo", WINDOW_AUTOSIZE);
imshow("Histogram Demo", histImage);
}
以上,opencv4.0配置VS2015完毕。