【OpenCV计算机视觉编程攻略】显示图像

#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);

 这两种方法的显示效果如下:

以上两种方法结果是一样的,但是就简洁性来说,还是第一种方法方便,仅需一句即可搞定了。


 

猜你喜欢

转载自blog.csdn.net/q_z_r_s/article/details/82746322