如:
Mat src = imread("F:\\圖片\\00002.jpg");
Mat des1;
cvtColor(src,des1,CV_BGR2GRAY); //出錯
錯誤表現如下:
原因分析:
利用cvtColor 進行灰度轉換時,不能將 灰度圖 轉爲灰度圖,所以在轉換前,需對原始圖像進行判斷。
解決辦法:
// 轉換單通道
if (src.channels() == 4) {
cv::cvtColor(src, src, CV_BGRA2GRAY);
} else if (src.channels() == 3) {
cv::cvtColor(src, src, CV_BGR2GRAY);
} else if(src.channels() == 2) {
cv::cvtColor(src,src,CV_BGR5652GRAY);
} else if(src.channels() == 1) {// 單通道的圖片直接就不需要處理
return src;
} else { // 負數,說明圖有問題 直接返回
return src;
}