我正在按照教科书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通道)时,可以看到效果很好。如果平衡器不起作用,请确保图像颜色模式不是灰色。

10-04 22:48