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;
}

留言