使用Android手机摄像头作为Web Cam与OpenCV / C ++

时间:2013-03-04 12:47:46

标签: c++ opencv

我需要一部移动相机作为网络摄像头。我需要进一步处理我的openCV应用程序的摄像头视频。但是可用于此目的的软件缺少api所需的文档。 (我的意思是如何访问手机摄像头界面)所以任何人都可以给我这个场景的好建议。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

要使其正常运行,我们首先需要一个移动客户端。您可以在Android手机上下载“ IP网络摄像头”应用程序。配置端口(例如:2333)并启动服务器。

如果计算机和移动设备连接到相同的本地网络,则可以在计算机的网络浏览器上键入电话应用程序中显示的IP地址。没关系。 这样,通过慢速的wifi传输流。

要提高速度,可以通过USB连接。我们将通过USB重定向TCP流。在您的android设备上打开调试模式,然后在计算机上安装android ADB工具。要转发流,语法为:

adb forward <local> <remote>
for example:
./adb forward tcp:5555 tcp:2333 

将手机的192.168.XX.XX:2333转发到计算机的http://localhost:5555/

然后您可以使用此链接。

要在您的OpenCV项目中使用,请尝试以下示例:

#include <opencv2/opencv.hpp>
#include <iostream>

int main(int, char**) {
    cv::VideoCapture vcap;
    cv::Mat image;

    const std::string videoStreamAddress = "http://localhost:5555/video";
       //open the video stream and make sure it's opened
    if(!vcap.open(videoStreamAddress)) {
        std::cerr << "Error opening video stream or file" << std::endl;
        return -1;
    }

    for(;;) {
        vcap.read(image);
        cv::imshow("Output Window", image);

        if(cv::waitKey(1) >= 0) break;
    }

}

答案 1 :(得分:0)

我认为,它实际上并不是openCV的问题。我假设应用程序将在PC上运行。您有两种选择:

  1. 尝试使用特定于设备的驱动程序与手机的相机连接。也许他们中的一些人支持这样的功能。

  2. 为您的手机编写应用程序,该应用程序将通过WiFi,蓝牙或其他方式传输视频。然后编写一组驱动程序,它们将尝试检索视频源并作为网络摄像头提供给操作系统。

  3. 第三个选项涉及在移动设备上录制视频,然后将其传输到PC,但我猜,它不是一个选项。