Jak ustawić rozdzielczość kamery w systemie Android za pomocą OpenCV?

Próbuję opracować aplikację na Androida i musiałbym uzyskać nieskompresowane zdjęcia z rozdzielczością tak wysoką, jak to możliwe, z kamery. Próbowałem rawCallback i postviewCallback w takePicture, ale nie działają.

W tej chwili próbuję z OpenCV (wersja 2.4) używając VideoCapture, ale utknąłem w domyślnym 960x720, który jest słaby dla tego, czego potrzebuję; a mój telefon, Samsung Galaxy S3, jest w stanie zapewnić, teoretycznie, do 8 Mb (3 264 × 2448 dla zdjęć i 1920 × 1 080 dla wideo, według Wikipedii). VideoCapture.set (Highgui.CV_CAP_PROP_FRAME_WIDTH / HEIGHT, niektóre liczby) sprawia, że ​​kamera zwraca czarny obraz, o ile znalazłem.

Czy jest jakiś sposób na uzyskanie wyższej rozdzielczości, zarówno za pośrednictwem OpenCV, jak i interfejsu API systemu Android, bez kompresji?

Naprawdę przepraszam, jeśli o to wcześniej zapytano; Szukałem od wielu dni i niczego nie znalazłem.

Dziękuję za Twój czas!

EDYCJA: Chociaż nie jest dokładnie tym, o co pytałem, odkryłem, że istnieje sposób na zrobienie czegoś bardzo podobnego: jeśli ustawisz OnPreviewCallback dla kamery, używając setPreviewCallback, otrzymasz surowe dane obrazu z kamery (przynajmniej w S3 pracuję z). Zostawiam to tutaj na wypadek, gdyby ktoś uznał to za przydatne w przyszłości.

EDYCJA: Częściowe rozwiązanie wyjaśniono w odpowiedzi poniżej. Podsumowując,

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

działa w pewnych warunkach; zobacz szczegóły poniżej.

questionAnswers(2)

yourAnswerToTheQuestion