解决问题:由于每次新建项目都要配置opencv,故通过以下方法进行解决
1. opencv的首次配置
[windows] VS配置Opencv:
https://blog.csdn.net/xgocn/article/details/104170088
通过以上方法,我们在项目文件当中,会存在如下文件:
2. 快速配置opencv
1.新建项目
2. 配置opencv
选择Debug x64,然后再点击属性管理器。
右键选择添加现有属性表。
找到之前已经配置好的属性表,进行添加。
3. 大功告成!
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
// argc是命令行 总的参数个数; argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数
// char *argv[] 用来取得你所输入的参数
// main(int argc, char **argv)和main(int argc, char *argv[])一个意思
// int argc是输入在命令行上的参数(字符串)个数;
// *argv[]是指向字符串的指针数组,即数组元素是指向输入在命令行上的每个参数(字符串)的指针。
int main(int argc, char** argv)
{
Mat image;
image = imread("./1.jpg");
if (image.data == nullptr) //nullptr是c++11新出现的空指针常量
{
cout << "图片文件不存在" << endl;
}
else
{
//显示图片
imshow("meinv", image);
waitKey(0);
}
// 输出图片的基本信息
cout << "图像宽为:" << image.cols << "\t高度为:" << image.rows << "\t通道数为:" << image.channels() << endl;
// 遍历每个像素
//之所以用y这个名字表示行是因为图片的坐标系中行号就是y
for (size_t y = 0; y < image.rows; y++)
{
// 获取行指针,之所以用char的原因是因为颜色值是1-256用char能放得下
// ptr是pointer的缩写
unsigned char* row_ptr = image.ptr<unsigned char>(y);
for (size_t x = 0; x < image.cols; ++x) {
//这是获得像素数据数组的头指针,注意像素数据可能会有多个通道所以才需要用数组存储
unsigned char* data_ptr = &row_ptr[x * image.channels()];
//对当前像素逐个通道输出颜色值
for (int i = 0; i < image.channels(); ++i) {
cout << int(data_ptr[i]) << endl;
}
}
}
system("pause");
return 0;
}
其中,图片需要放在与test.cpp同一路径下。