cv :: VideoCapture.open(0)在Android

时间:2018-07-12 08:49:38

标签: android opencv c++11

上下文

我正在编写一个基于OpenCV的跨平台C ++共享库。消费代码是通过桥接到RN的react native native模块实现的React Native Application。

功能

基本上,它会打开设备默认的相机并拍摄快照。

结果

此代码随后在iOS和Android上运行。

  1. 这在iOS上运行良好。
  2. 在Android上失败。

Android的问题

这是Adndroid上C ++代码的失败部分:

// cap is a cv::VideoCapture object    
if (cap.open(0))
        {
            cap.set(cv::CAP_PROP_FRAME_WIDTH, CAM_WIDTH);
            cap.set(cv::CAP_PROP_FRAME_HEIGHT, CAM_HEIGHT);
        }
        else
        {
            reject("false", "cap.open(0) returned false");
        }

我决定遍历OpenCV C ++源代码以了解更多信息。

基本上,对Open()的调用会检查后端特征:

const std :: vector后端= cv :: videoio_registry :: getAvailableBackends_CaptureByIndex();

这是OpenCV 3.4.1中的backends available

在定义的最后,有一个可怕的评论:

  

//掉落的后端:MIL,TYZX,Android

显然,我需要保证。我可以使用替代代码在Android上使用VideoCapture吗?还是应该在定义中重新引入Android后端?我将自己构建共享的本机库,以便有可能。

谢谢。

0 个答案:

没有答案