Я успешно создал opencv (с ffmpeg) для android arm64-v8a, однако cvCreateCameraCapture
возвращает ноль. cvCreateFileCapture
работает хорошо. Я обнаружил, что нам нужно установить следующий пункт для поддержки камеры:
-DWITH_V4L=1 -DHAVE_CAMV4L2=ON
Теперь в opencv встроена версия v4l.
Однако при запуске приложения собственный исходный код открывает камеру с помощью функции opencv cvCreateCameraCapture
. Следующий интерфейс в cap_libv4l.cpp (исходный код opencv) не может успешно открыть устройство.
static void icvInitCapture_V4L() {
//...
CameraNumber = 0;
while(CameraNumber < MAX_CAMERAS) {
/* Print the CameraNumber at the end of the string with a width of one character */
sprintf(deviceName, "/dev/video%1d", CameraNumber);
/* Test using an open to see if this new device name really does exists. */
deviceHandle = open(deviceName, O_RDONLY);
char* strno = strerror(errno);
LOGD("icvInitCapture_V4L wwwwwwwwwww %s !!\n", strno );
if (deviceHandle != -1) {
/* This device does indeed exist - add it to the total so far */
// add indexList
indexList|=(1 << CameraNumber);
numCameras++;
}
//...
}
Эта функция открытия не удалась из-за отказа в разрешении.
icvInitCapture_V4L wwwwwwwwwww В доступе отказано !!
Я думаю, что мое приложение для Android не имеет соответствующего разрешения. Однако я добавил следующие настройки в AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
И функции opencv вызываются в потоке в моем приложении. Мое приложение представляет собой сервис для Android.
Я проверил разрешение для / dev / videoX, как показано ниже.
1|gts4lltechn:/dev $ ls -l | grep video ls: ./event-log-tags: Permission denied
crw-rw---- 1 system camera 81, 0 2017-04-01 08:37 video0
crw-rw---- 1 system camera 81, 1 2017-04-01 08:37 video1
crw-rw---- 1 system camera 81, 2 2017-04-01 08:37 video2
crw-rw---- 1 system camera 81, 3 2017-04-01 08:37 video3
crw-rw---- 1 system camera 81, 32 2017-04-01 08:37 video32
crw-rw---- 1 system camera 81, 33 2017-04-01 08:37 video33
crw-rw---- 1 system camera 81, 4 2017-04-01 08:37 video4
crw-rw---- 1 system camera 81, 5 2017-04-01 08:37 video5
crw-rw---- 1 system camera 81, 6 2018-12-20 21:28 video6
Как исправить проблему с разрешениями для моего приложения?
PS: перед запуском приложения я открываю разрешения для камеры и хранилища, установив.