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函數直接結束程式
//讀圖失敗的判斷寫法1
if (! image.data )
//讀圖失敗的判斷寫法2
if (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;
}
留言