OpenCV相机预览颜色是否关闭?

时间:2017-12-29 11:09:42

标签: android opencv

我正在尝试使用OpenCV-android-sdk附带的示例应用程序,但预览中的颜色似乎大幅消失。以下是模拟器中的Camera应用程序的原始预览(API 25):

enter image description here

tutorial-1-camerpreviewcolor-blob-detection15-puzzle等示例应用提供了强烈的蓝色色调:

enter image description here

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

OpenCV默认使用BGR格式而不是RGB格式。一个小的Matlab脚本证明只需切换RGB和BGR。你可以在杯子里看到它,原来是红色的,而错误的是#34;图片。

这是用于推理我的理论的matlab脚本

rgb = imread('C:\Users\Kevin\Desktop\uA5Q1.png')
bgr = cat(3,squeeze(rgb(:,:,3)),squeeze(rgb(:,:,2)),squeeze(rgb(:,:,1)))
figure;
imshowpair(rgb,bgr,'Montage')

enter image description here

左侧显示op发布的图像,右侧显示更改顺序后的bgr。

在大多数情况下,您有以下功能:

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    return inputFrame.rgba();
}

您可以更改此功能,以便显示正确的顺序,这样您就可以使用cvtColor功能。看起来如下:

rgba = cvtColor(img,CV_RGBA2BGRA);

img是你的输入图像。 该名称可能具有误导性,但如果您使用CV_BGRA2RGBACV_RGBA2RGBA,它将无效,因为它只会在两种情况下切换第一个和最后一个矩阵