VC++使用OpenCV讀取圖片
OpenCV可以支援的圖檔格式很多,但不是所有格式,常見的BMP,JPG,PNG都是沒有問題的,其他可讀取的圖檔格式要查官方網站的說明。
OpenCV讀取圖片使用imread函數,第一個參數是圖片的路徑,第二個是圖片讀進來的樣貌。
如果用CV_LOAD_IMAGE_GRAYSCALE就是獲得灰階圖,得到的Mat的Type會是單Channel的CV_8U
如果用CV_LOAD_IMAGE_COLOR就是獲得彩色圖,得到的Mat的Type會是三個Channel的CV_8UC3
一般我們在imread之後會檢查是否有將圖片讀取近來,因為只要圖片讀取失敗,
就會讓後面的處理當機,所以讀取失敗記得要讓程式顯示錯誤唷! 或是用exit函數直接結束程式
//讀圖失敗的判斷寫法1if (! image.data )//讀圖失敗的判斷寫法2if (image.data == NULL)
下面是範例程式碼
#include <iostream>#include <opencv.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){ Mat image; try { if (argc > 1) { image = imread(argv[1], CV_LOAD_IMAGE_COLOR); } else { image = imread("image.bmp", CV_LOAD_IMAGE_COLOR); } } catch (Exception& e) { cerr << e.what() << endl; return -1; } if(! image.data ) { cout << "Could not open or find the image" << endl; return -1; } system("pause"); return 0;}
留言