¿Cómo configurar la resolución de la cámara en Android con OpenCV?

Estoy tratando de desarrollar una aplicación para Android, y necesitaría obtener imágenes sin comprimir con una resolución lo más alta posible de la cámara. Intenté tomar rawCallback y postviewCallback de TakePicture, pero no están funcionando.

Ahora mismo estoy probando con OpenCV (versión 2.4) usando VideoCapture, pero estoy atascado en el valor predeterminado de 960x720, que es deficiente para lo que necesito; y mi teléfono, un Samsung Galaxy S3, es capaz de proporcionar, teóricamente, hasta 8Mpx (3,264 × 2,448 para fotos y 1,920 × 1,080 para video, según Wikipedia). VideoCapture.set (Highgui.CV_CAP_PROP_FRAME_WIDTH / HEIGHT, algún número) hace que la cámara regrese una imagen negra hasta donde he encontrado.

¿Hay alguna forma de obtener una resolución más alta, ya sea a través de OpenCV o con la API de Android, sin comprimir?

Lo siento mucho si esto ha sido preguntado antes; Llevo días buscando y no he encontrado nada.

¡Gracias por tu tiempo!

EDITAR: Aunque no es exactamente lo que estaba preguntando, descubrí que hay una manera de hacer algo muy similar: si establece un OnPreviewCallback para la cámara, usando setPreviewCallback, obtiene los datos de imagen en bruto de la cámara (al menos en el S3 estoy trabajando con). Lo dejo aquí por si alguien lo encuentra útil en el futuro.

EDITAR: Una solución parcial se explica en una respuesta a continuación. Para resumir,

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

trabaja bajo ciertas condiciones; Consulte a continuación para obtener más detalles.

Respuestas a la pregunta(3)

Su respuesta a la pregunta