我正在尝试为 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, some number) 使相机返回我发现的黑色图像。
有什么方法可以通过 OpenCV 或 Android API 获得更高的分辨率,而无需压缩?
如果以前有人问过这个问题,我真的很抱歉;我一直在寻找几天,我什么也没找到。
感谢您的时间!
编辑:虽然这不是我要问的,但我发现有一种方法可以做一些非常相似的事情:如果您为相机设置 OnPreviewCallback,使用 setPreviewCallback,您确实会从相机获取原始图片数据(至少在我正在使用的 S3 中)。我把它留在这里,以防将来有人发现它有用。
编辑:在下面的答案中解释了部分解决方案。总结一下,
vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);
在某些条件下工作;请参阅下文了解更多详情。