我正在尝试使用OpenCV-android-sdk附带的示例应用程序,但预览中的颜色似乎大幅消失。以下是模拟器中的Camera应用程序的原始预览(API 25):
但tutorial-1-camerpreview,color-blob-detection和15-puzzle等示例应用提供了强烈的蓝色色调:
有谁知道为什么会这样?
答案 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')
左侧显示op发布的图像,右侧显示更改顺序后的bgr。
在大多数情况下,您有以下功能:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
return inputFrame.rgba();
}
您可以更改此功能,以便显示正确的顺序,这样您就可以使用cvtColor
功能。看起来如下:
rgba = cvtColor(img,CV_RGBA2BGRA);
img是你的输入图像。
该名称可能具有误导性,但如果您使用CV_BGRA2RGBA
或CV_RGBA2RGBA
,它将无效,因为它只会在两种情况下切换第一个和最后一个矩阵