opencv cvtColor 出錯

如:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章