OpenCV 2.3: как захватывать кадры с камеры Android? - PullRequest
2 голосов
/ 26 августа 2011

Я пытаюсь использовать новую функцию OpenCV на Android: собственный доступ к камере.Согласно этому документу, это довольно просто, но я получаю только ошибку без успеха.

Есть журнал DDMS:

08-26 03:28: 56.825: DEBUG / CAMERA_ACTIVITY (12613): имя библиотеки: libopencv_java.so 08-26 03: 28: 56.825: DEBUG / CAMERA_ACTIVITY (12613): базовый адрес библиотеки: 0x81800000 08-26 03: 28: 56.835: DEBUG / CAMERA_ACTIVITY (12613): найдена папка библиотек: /data/data/com.viactivity.ar/lib/ 08-26 03: 28: 56.835: DEBUG / CAMERA_ACTIVITY (12613): CameraWrapperConnector :: connectToLib: folderPath = / data / data / com.viactivity.ar/lib/ 08-26 03: 28: 56.835: ERROR / CAMERA_ACTIVITY (12613): || libnative_camera_r2.2.2.so 08-26 03: 28: 56.835: ERROR / CAMERA_ACTIVITY (12613): || libnative_camera_r2.3.3.so 08-26 03: 28: 56.835: DEBUG / CAMERA_ACTIVITY (12613): попытаться загрузить библиотеку 'libnative_camera_r2.2.2.so' 08-26 03: 28: 56.835: DEBUG / CAMERA_ACTIVITY (12613): CameraWrapperConnector :: connectToLib ERROR: невозможно открыть библиотеку оболочки камеры /data/data/com.viactivity.ar/lib/libnative_camera_r2.2.2.Итак, dlerror = "Невозможно загрузить библиотеку: find_library [1223]: 11258 'libnative_camera_r2.2.2.so' не удалось загрузить ранее" 08-26 03: 28: 56.835: DEBUG / CAMERA_ACTIVITY (12613): попытаться загрузить библиотеку 'libnative_camera_r2.3.3.so '08-26 03: 28: 56.835: DEBUG / CAMERA_ACTIVITY (12613): CameraWrapperConnector :: connectToLib ОШИБКА: невозможно открыть библиотеку оболочки камеры /data/data/com.viactivity.ar/lib/libnative_camera_r2.3.3.so,dlerror = "Невозможно загрузить библиотеку: find_library [1223]: 11258« libnative_camera_r2.3.3.so 'не удалось загрузить ранее »08-26 03: 28: 56.835: ОШИБКА / CAMERA_ACTIVITY (12613): CameraWrapperConnector :: connectToLib ОШИБКА: не удается убрать камерубиблиотека обертки 08-26 03: 28: 56.835: ОШИБКА / CV_CAP (12613): родная камера вернула ошибку открытия: 4 08-26 03: 28: 56.835: ОШИБКА / AR_code (12613): ошибка захвата!

Существует два варианта кода:

CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANDROID + 0 ); 
IplImage* frame = cvQueryFrame( capture );
cvReleaseCapture(&capture);

.

cv::VideoCapture capture(CV_CAP_ANDROID + 0);
cv::Mat frame;

capture >> frame;

Оба они выдают одинаковые ошибки.Кто-нибудь смог получить доступ к родной камере на Android?Большое спасибо!

UPD: Вышеприведенная история о Android 3.2.По словам Андрея Камаева, Android 3.2 не поддерживается.Я пытался протестировать тот же код в HTC Wildfire, но получил еще одну ошибку:

08-26 19: 49: 06.856: DEBUG / OpenCV_NativeCamera (1337): CameraHandler :: initCameraConnect (0x813e65a1, 0,0x285a20, 0x0) 08-26 19: 49: 06.856: DEBUG / CameraService (72): CameraService :: connect E (pid 1337, клиент 0x693d8) 08-26 19: 49: 06.856: DEBUG / CameraService (72): CameraService:: connect X (pid 1337, новый клиент 0x693d8) отклонен.(старый pid 1337, старый клиент 0x18728) 08-26 19: 49: 06.856: ОШИБКА / OpenCV_NativeCamera (1337): initCameraConnect: невозможно подключиться к CameraService 08-26 19: 49: 06.856: ОШИБКА / CAMERA_ACTIVITY (1337): CameraWrapperConnector:: connectWrapper ОШИБКА: функция инициализации вернула false 08-26 19: 49: 06.856: ERROR / CV_CAP (1337): Native_camera вернула ошибку открытия: 6

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 26 августа 2011

В настоящее время собственная камера OpenCV не поддерживает Android 3.2 (поскольку ее источники не являются общедоступными).

Я опубликую обновление, как только станет доступна версия, совместимая с Android 3.2.

Обновление:

У ствола OpenCV уже есть решение для Android 3.x и 4.0.x. Он будет включен в следующую основную версию OpenCV.

1 голос
/ 26 августа 2011

Два вышеописанных метода, которые вы описали, не могут быть реализованы, вместо этого ...

используйте обратный вызов Camera.Preview, чтобы получить необработанные кадры YUV, затем преобразовать кадры YUV в RGB и построитьIPlImage * из имеющихся данных,

Затем используйте построенный IplImage для дальнейшей обработки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...