在使用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通道