OpenCV 2.3:如何从Android摄像头捕获帧?

Vit*_* S. 2 android opencv android-ndk

我正在尝试在Android上使用新的OpenCV功能:本机摄像头访问.根据这个文档,这很容易,但我只是得到错误而没有成功.

有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错误:无法dlopen相机包装库/data/data/com.viactivity.ar/lib/libnative_camera_r2.2.2.so,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错误:无法dlopen相机包装库/ 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:ERROR/CAMERA_ACTIVITY( 12613):CameraWrapperConnector :: connectToLib错误:无法dlopen相机包装器库08-26 03:28:56.835:ERROR/CV_CAP(12613):Native_camera返回打开错误:4 08-26 03:28:56.835:ERROR/AR_code(12613) ):捕获错误!

有两种代码变体:

CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANDROID + 0 ); 
IplImage* frame = cvQueryFrame( capture );
cvReleaseCapture(&capture);
Run Code Online (Sandbox Code Playgroud)

.

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

capture >> frame;
Run Code Online (Sandbox Code Playgroud)

它们都产生相同的错误.有人能够在Android上获得原生相机访问权限吗?非常感谢!

UPD: 上面的故事是关于Android 3.2的.根据Andrey Kamaev的说法,不支持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:ERROR/OpenCV_NativeCamera(1337):initCameraConnect:无法连接到CameraService 08-26 19:49:06.856:ERROR/CAMERA_ACTIVITY(1337):CameraWrapperConnector: :connectWrapper错误:初始化函数返回false 08-26 19:49:06.856:ERROR/CV_CAP(1337):Native_camera返回打开错误:6

有任何想法吗?

And*_*aev 5

目前,OpenCV原生相机不支持Android 3.2(因为它的来源不公开.)

只要与Android 3.2兼容的版本可用,我就会发布更新.

更新:

OpenCV trunk已经有Android 3.x和4.0.x的解决方案.它将被包含在OpenCV的下一个主要版本中.