2017-06-15 182 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频道)。如果平衡器不起作用,请确保图像颜色模式不是灰色。