- 本文为@源码人原创文章,转载请注明出处
- 文章链接:https://blog.csdn.net/q_z_r_s
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img;
//Mat imread( const string& filename, int flags=1 );
img = imread("lena.jpg",1);
if(img.empty()){
cout << "read image failed!" << endl;
return 1;
}
//void imshow(const string& winname, InputArray mat);
imshow("show a image", img);
cout << img.rows << '*' << img.cols << endl;
cout << img.channels() << endl;
waitKey(0);
return 0;
}
显示效果如下:
Mat imread( const string& filename, int flags=1 );此函数有两个输入参数,第一个为文件名,第二个为读取方式,默认值为1,所以也可以不输入此参数;当flags使用默认参数时,都入的为三通道的图像;当flags输入参数为0时,读入的为单通道的灰度图;
因此根据此函数,显示单通道灰度图的方法就有以下两种操作:
第一种方法:
img = imread("lena.jpg",0);
第二种方法:
#include <opencv2/imgproc/imgproc.hpp>
img = imread("lena.jpg",1);
//void cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 );
cvtColor(img, img, CV_RGB2GRAY);
这两种方法的显示效果如下:
以上两种方法结果是一样的,但是就简洁性来说,还是第一种方法方便,仅需一句即可搞定了。