如何设置摄像头分辨率的Android与OpenCV的?(How to set camera reso

2019-06-27 08:31发布

我试图开发Android的应用程序,我需要得到具有尽可能高从相机的分辨率非压缩的图片。 我试图takePicture的rawCallback和postviewCallback,但他们没有工作。

现在,我使用VideoCapture的OpenCV(2.4版本)很努力,但我卡在默认960x720,这是可怜我需要什么; 我的手机,三星Galaxy S3,能够提供,理论上,最多8Mpx(3,264×2,448的照片,和1920×1080的视频,根据维基百科)。 VideoCapture.set(Highgui.CV_CAP_PROP_FRAME_WIDTH /高度,一些数),使相机返回一个黑色图像,据我已经找到。

有没有什么办法,以获得更高的分辨率,无论是通过OpenCV的或与Android API,无需压缩?

我真的很抱歉,如果这已问过; 我一直在寻找了几天,我都一无所获。

感谢您的时间!

编辑:虽然不正是我一直在问,我发现有一种方法可以做一些非常相似:如果设置OnPreviewCallback的摄像头,采用setPreviewCallback,你得到从相机的原始图像数据(至少在S3我的工作)。 我离开这里万一有人发现它在将来有用。

编辑:的部分解决方案将在下面的答案说明。 总结一下,

vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);

在一定条件下工作; 请参阅下面的更多细节。

Answer 1:

你必须通过调用获得支持的摄像头预览resoultions getSupportedPreviewSizes

在此之后,你可以设置与方法的任何决议setPreviewSize 。 而且不要忘了setParameters到底。 Actally许多OpenCV的Android的例子包含该信息(看样本3)。



Answer 2:

如果有人曾经认为这是有用的,我发现了一个(部分)解决方案:如果您VideoCapture变量称为VC,这应该工作:

vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);

介意,宽度和高度的组合必须支持的图片格式为您的相机之一,否则只会得到一个黑色的图像。 你可以让这些通过Camera.Parameters.getSupportedPictureSizes()。

但是,设置高分辨率出现超过YUV转换缓冲区的容量,所以我仍然与挣扎。 我要提出一个新的,独立的问题为,把一切都更清晰: 新的线程



Answer 3:

setPreviewSize不设置图像分辨率。 setPictureSize一样。



文章来源: How to set camera resolution in Android with OpenCV?