在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;这样去除作用域后,也没有问题