我正在按照教科书iOS Application Development with OpenCV 3
进行操作,其中一个示例使用 cv::xphoto::autowbGrayworld
函数。我正在使用opencv 3.2,但它似乎没有此功能。
是否有替代方法,或者我必须使用opencv 3.1才能使用该功能?
最佳答案
我正在读这本书的同一部分。使用OpenCV 3.2时出现相同的错误。
之后检查OpenCV文档。
显然,我们应该改为使用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通道)时,可以看到效果很好。如果平衡器不起作用,请确保图像颜色模式不是灰色。