天天看點

Opencv Mat.at<>(x,y) 根據xy取指定點顔色越界異常錯誤記錄

在使用Mat.at<>()時,注意此時Map對象顔色空間類型,是灰階化(黑白一個通道)還是RGB(彩色三通道表示)等其他...

例:

  Mat mat;
    mat = imread("E:\\plate.jpg");//444, 960  RGB
    //灰階化
   mat.at<Vec3b>(443, 959); //正常
    cvtColor(mat, mat, COLOR_RGB2GRAY);
    mat.at<Vec3b>(443, 959); //報錯 
   mat.at<uchar>(443, 959);//正常      

 可以使用Mat的channel()檢視目前通道個數:

Mat mat;
    mat = imread("E:\\plate.jpg");
    cout << mat.channels() << endl;//3
    cvtColor(mat, mat, COLOR_RGB2GRAY);//灰階化
    cout << mat.channels() << endl;//1
  cvtColor(mat, mat, COLOR_BayerRG2RGBA); 
  cout << mat.channels() << endl;// 4通道      

繼續閱讀