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

前端之家收集整理的这篇文章主要介绍了如何使用OpenCV在Android中设置相机分辨率?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为 Android开发一个应用程序,我需要从相机获得尽可能高的分辨率的未压缩图片.我试过takePicture的rawCallback和postviewCallback,但是它们不工作.

现在我正在使用OpenCV(版本2.4)使用VideoCapture,但是我被困在默认的960×720中,这对我需要的是不好的;而根据维基百科的说法,三星Galaxy S3的手机在理论上可以提供高达8M的像素(3,264×2,448张照片,1,920×1080像素). 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);

在某些条件下工作;详情请见下文.

解决方法

您必须通过致电 getSupportedPreviewSizes获得支持的相机预览功能.

之后,您可以使用方法setPreviewSize设置任何分辨率.最后不要忘记setParameters.实际上很多OpenCV Android的例子包含了这个信息(见sample3).

猜你在找的Android相关文章