OpenCV函数imread报错:未定义标识符 "IMREAD_GRAYSCALE"、"IMREAD_UNCHANGED"、"IMREAD_COLOR"

在OpenCV中使用imread函数时,除了第一个参数外(第一个参数是指定需要读取的图片的路径和图片名),我们还可以指定一个参数,常用的就是"IMREAD_UNCHANGED"、"IMREAD_GRAYSCALE"、"IMREAD_COLOR"三个属性了

1)"IMREAD_UNCHANGED"指定用图片的原来格式打开,即以不改变图片的方式打开,图片是彩色就是彩色,图片是灰度图像就是灰度图像

2)"IMREAD_GRAYSCALE"指定用灰度图像的方式打开图片,即将原始图像转化为灰度图像再打开

3)"IMREAD_COLOR"指定用彩色图像打开图片

我们以"IMREAD_GRAYSCALE"参数为例,看代码:

#include <opencv2/opencv.hpp>

int main(int argc, char** argv)
{
	cv::Mat image = cv::imread("E:\\Lab\\OpenCVExample\\source\\image\\test.png",IMREAD_GRAYSCALE);
	cv::namedWindow("myImage", CV_WINDOW_AUTOSIZE);
	cv::imshow("myImage", image);

	cv::waitKey(0);

	return 0;
}

但是编译器却报错: 

明明已经包含了头文件了啊,可是为什么还是没有定义标识符呢

原来是没有指定标识符的作用域!!!

我们需要在标识符前面加上cv::

这样便正确了:

#include <opencv2/opencv.hpp>
//using namespace cv;

int main(int argc, char** argv)
{
	cv::Mat image = cv::imread("E:\\Lab\\OpenCVExample\\source\\image\\test.png",cv::IMREAD_GRAYSCALE);
	cv::namedWindow("myImage", CV_WINDOW_AUTOSIZE);
	cv::imshow("myImage", image);

	cv::waitKey(0);

	return 0;
}

 当然也可以在前面加上 using namespace cv;这样去除作用域后,也没有问题

猜你喜欢

转载自blog.csdn.net/qq_33757398/article/details/81712357
今日推荐