如何使用OpenCV在Android中设置相机分辨率?

Car*_*los 11 camera android opencv resolution

我正在尝试为Android开发应用程序,我需要从相机获得尽可能高分辨率的未压缩图片.我尝试了takePicture的rawCallback和postviewCallback,但它们没有用.

现在我正在尝试使用VideoCapture的OpenCV(版本2.4),但我陷入了默认的960x720,这对我需要的东西很差; 根据维基百科的说法,我的手机,三星Galaxy S3,理论上可以提供高达8Mpx(图片为3,264×2,448,视频为1,920×1,080).VideoCapture.set(Highgui.CV_CAP_PROP_FRAME_WIDTH/HEIGHT,某些数字)使相机返回到我发现的黑色图像.

有没有办法通过OpenCV或Android API获得更高的分辨率,而无需压缩?

如果以前有人问我,我真的很抱歉; 我一直在寻找几天,但我一无所获.

感谢您的时间!

编辑:虽然这不是我所要求的,但我发现有一种方法可以做一些非常相似的事情:如果使用setPreviewCallback为摄像机设置OnPreviewCallback,你可以从摄像机获取原始图像数据(至少在S3我正在与之合作).我把它留在这里,万一有人发现它有用.

编辑:部分解决方案在下面的答案中解释.总结一下,

vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);
Run Code Online (Sandbox Code Playgroud)

在某些条件下工作; 请参阅下面的详细信息.

Art*_*huk 2

您必须通过调用 来获取支持的相机预览结果getSupportedPreviewSizes

之后,您可以使用 method 设置任何分辨率setPreviewSizesetParameters最后不要忘记。实际上,许多 OpenCV Android 示例都包含此信息(请参阅示例 3)。