2017-06-15 143 views
0

我正在關注教科書iOS Application Development with OpenCV 3,其中一個示例使用功能cv::xphoto::autowbGrayworld。我使用的是opencv 3.2,但它似乎沒有這個功能。OpenCV xphoto功能

有沒有其他選擇,或者我將不得不使用opencv 3.1才能使用該功能?

回答

1

我正在讀這本書的同一部分。當我使用OpenCV 3.2時出現同樣的錯誤。

檢查OpenCV文檔後。

3.1: http://docs.opencv.org/3.1.0/de/daa/group__xphoto.html#gafaaa144cd2628bf65b115c538cfb50fb

3.2: http://docs.opencv.org/trunk/d7/d71/classcv_1_1xphoto_1_1GrayworldWB.html

顯然,我們應該使用GrayWorldWB代替。這樣的:

switch (originalMat.type()) { 
     case CV_8UC1: 
      // Mono color to RGB 
      cv::cvtColor(originalMat, originalMat, cv::COLOR_GRAY2RGB); 
      break; 
     case CV_8UC4: 
      // RGBA to RGB 
      cv::cvtColor(originalMat, originalMat, cv::COLOR_RGBA2RGB); 
      // FALL_THROW 
     case CV_8UC3: 
      // Adjust the whtie balance 
      cv::xphoto::createGrayworldWB()->balanceWhite(originalMat, originalMat); 
      break; 
     default: 
      break; 
    } 

我可以看到效果很好,當我用白色的過載照片(RGB或RGBA頻道)。如果平衡器不起作用,請確保圖像顏色模式不是灰色。