繁体   English   中英

OpenCV 2.3:如何从Android相机捕获帧?

[英]OpenCV 2.3: how to capture frames from Android camera?

我正在尝试在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 = /数据/数据/com.viactivity.ar/lib/ 08-26 03:28:56.835:错误/ 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_ 活动(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);

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错误:初始化函数返回的错误为08-26 19:49:06.856:ERROR / CV_CAP(1337):Native_camera返回了打开错误:6

有任何想法吗?

目前,OpenCV本机摄像头不支持Android 3.2(因为其来源不公开)。

与Android 3.2兼容的版本发布后,我会立即发布更新。

更新:

OpenCV干线已经具有适用于Android 3.x和4.0.x的解决方案。 它会包含在OpenCV的下一个主要版本中。

您所描述的以上两种方法无法解决,而是...

使用Camera.Preview回调获取原始YUV帧,然后将YUV帧转换为RGB,然后根据可用数据构造IPlImage *,

然后使用构造的IplImage进行进一步处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM