我正在尝试在Android上使用新的OpenCV功能:本机摄像头访问。根据{{3}}文档,它很容易,但我只是得到错误而没有成功。
有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:无法dlopen相机包装库/data/data/com.viactivity.ar/lib/libnative_camera_r2.2.2.so,dlerror =“不能load library: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 =“不能load library:find_library [1223]:11258'libnative_camera_r2.3.3.so'先前无法加载“ 08-26 03:28:56.835:ERROR / CAMERA_ACTIVITY(12613):CameraWrapperConnector :: connectToLib错误:无法打开相机包装库 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);
cv::VideoCapture capture(CV_CAP_ANDROID + 0);
cv::Mat frame;
capture >> frame;
它们都会产生相同的错误。 有人能够在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
有什么想法吗?
答案 0 :(得分:5)
目前,OpenCV原生相机不支持Android 3.2(因为它的来源不公开。)
只要与Android 3.2兼容的版本可用,我就会发布更新。
OpenCV trunk已经有Android 3.x和4.0.x的解决方案。它将被包含在OpenCV的下一个主要版本中。
答案 1 :(得分:1)
你所描述的上述两种方法无法解决,而不是......
使用Camera.Preview回调获取原始YUV帧,然后将YUV帧转换为RGB,然后根据可用数据构建IPlImage *,
然后使用构造的IplImage进行进一步处理