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 desde la cámara. Intenté tomar RawCallback y postviewCallback de picturePicture, pero no están funcionando.¿Cómo establecer la resolución de la cámara en Android con OpenCV?
Ahora estoy intentando con OpenCV (versión 2.4) usando VideoCapture, pero estoy atascado en el predeterminado 960x720, que es pobre 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 imágenes 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 devuelva una imagen negra por lo que he encontrado.
¿Hay alguna manera 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 se ha preguntado antes; He estado buscando días y no he encontrado nada.
¡Gracias por su tiempo!
EDITAR: Aunque no es exactamente lo que estaba preguntando, encontré que hay una manera de hacer algo muy similar: si configuras un OnPreviewCallback para la cámara, usando setPreviewCallback, obtienes los datos de la imagen en bruto del cámara (al menos en el S3 con el que estoy trabajando). Lo dejo aquí en caso de que alguien lo encuentre útil en el futuro.
EDIT: Una solución parcial se explica en la respuesta a continuación. En resumen,
vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);
funciona bajo ciertas condiciones; por favor mira abajo para más detalles.