如何使用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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...