Intereting Posts
Можно ли получить доступ к текущему фрагменту, просматриваемому ViewPager? Как установить кнопку переключателя Lollipop Как я могу сохранить растровое изображение с onRetainNonConfigurationInstance () для ориентации экрана? GoogleMaps MapView разбивает OnTap на Android? Нет проблем с проверкой подлинности. Необходимые обсуждения можно найти в Интернете по адресу: Fragment.isAdded возвращает true после удаления фрагмента из контейнера Потоковое видео (или прогрессивная загрузка) в браузер Droid Замена для механизма линейных весов Ошибка genymotion openGL Как увеличить размер флажка на мобильных веб-страницах на мобильных устройствах или планшете? Android – Как оживить переход активности при нажатии кнопки возврата по умолчанию Как использовать Broadcom BLE SDK (SMART 4.0) в Android 4.X AVD Manager теряет пользовательские определения устройств после закрытия и повторного открытия Как получить изображения из кэш-памяти в picasso? Преобразование RealmResults <E> в список <E> с помощью copyFromRealm

Как установить разрешение камеры в Android с OpenCV?

Я пытаюсь разработать приложение для Android, и мне нужно будет получить несжатые изображения с разрешением как можно выше от камеры. Я попробовал rawCallback и POPPACKCullback, но они не работают.

Прямо сейчас я пытаюсь использовать OpenCV (версия 2.4) с помощью VideoCapture, но я застрял в 960×720 по умолчанию, что плохо для того, что мне нужно; И мой телефон, Samsung Galaxy S3, может предоставить теоретически до 8Mpx (3,264 × 2,448 для изображений и 1,920 × 1080 для видео, согласно Википедии). VideoCapture.set (Highgui.CV_CAP_PROP_FRAME_WIDTH / HEIGHT, некоторое число) заставляет камеру вернуть черное изображение, насколько я нашел.

Есть ли способ получить более высокое разрешение, будь то через OpenCV или с Android API, без сжатия?

Мне очень жаль, если это было задано раньше; Я искал дни и ничего не нашел.

Спасибо за ваше время!

EDIT: Хотя это не совсем то, о чем я просил, я обнаружил, что есть способ сделать что-то очень похожее: если вы установите OnPreviewCallback для камеры, используя setPreviewCallback, вы получите необработанные данные изображения с камеры (по крайней мере В S3, с которым я работаю). Я оставляю его здесь, если кто-то найдет его полезным в будущем.

EDIT: частичное решение объясняется в ответе ниже. Подводить итоги,

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

Работает при некоторых условиях; Более подробно см. Ниже.

Solutions Collecting From Web of "Как установить разрешение камеры в Android с OpenCV?"

Вы должны получить поддерживаемые предварительные просмотры камеры, вызвав getSupportedPreviewSizes .

После этого вы можете установить любое разрешение с помощью метода setPreviewSize . И не забудьте setParameters в конце. Фактически многие примеры OpenCV Android содержат эту информацию (см. Образец3).

Если кто-нибудь когда-нибудь найдет это полезным, я нашел (частичное) решение: если ваша переменная VideoCapture называется vc, это должно работать:

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

Имейте в виду, что сочетание ширины и высоты должно быть одним из поддерживаемых форматов изображений для вашей камеры, иначе оно просто получит черное изображение. Вы можете получить их через Camera.Parameters.getSupportedPictureSizes ().

Однако установка высокого разрешения превышает мощность буфера преобразования YUV, поэтому я все еще боюсь с этим. Я собираюсь задать для этого новый отдельный вопрос, чтобы все было яснее: новый поток

SetPreviewSize не устанавливает разрешение изображения. SetPictureSize делает.