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