在OpenCV中,有一些函数可用于图像读取和保存,这些函数都在命名空间cv中,所以使用时有两种方式,一种是在函数头部声明using namespace cv;第二种方式就是使用cv作为函数的限定。
从文件中读入一幅图像可以使用imread函数来读取图像,
Mat img=imread(filename);
该语句将filename所指定路径的指定文件读取到img数组中,该函数读取的是默认的三通道图像,读取的顺序默认情况下是BGR顺序,如果想得到单通道(灰度级的)图像,则可以使用下面的方式:
Mat img=imread(filename,0);
当然读取图像还有其他的方法,如下面所示,在OpenCV中,IplImage结构体是一个重要的结构体,
可以定义一个指向IplImage的结构体指针,结合函数cvLoadImage来读取图像,如下所示:
IplImage *scr;
scr=cvLoadImage("H:\\VS2010Ultimtrial\\file\\testOpenCV\\test.jpg",1);
当写成
IplImage *scr;
scr=cvLoadImage("H:\\VS2010Ultimtrial\\file\\testOpenCV\\test.jpg",0);
表示读取的是单通道(灰度级)的图像
当读取完图像数据后可分别使用imshow(filename,img)和cvShowImage(title,scr)来显示图像。
参考程序如下:
const char* imagename = "H:\\我的文档\\我的图片\\合肥植物园之旅\\DSCN0175.jpg";
cv::Mat img = cv::imread(imagename);
if(img.empty())return -1; //是否加载成功
if(!img.data)return -1;
cv::namedWindow("image", CV_WINDOW_NORMAL);
cv::imshow("image", img);
cv::waitKey();
或者:
IplImage *scr;scr=cvLoadImage("H:\\VS2010Ultimtrial\\file\\testOpenCV\\test.jpg",1);
cvNamedWindow("美女",CV_WINDOW_AUTOSIZE);
cvShowImage("test.jpg",scr);