2

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

4

2 回答 2

2

为了让它工作,我们首先需要一个移动客户端。您可以在您的安卓手机上下载“IP 网络摄像头”应用程序。配置端口(例如:2333)并启动服务器。

如果您的计算机和移动设备连接到同一个本地网络,您可以在计算机的 Web 浏览器上键入您的手机应用程序上显示的 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;
    }

}
于 2019-04-17T10:30:49.640 回答
0

我认为,这实际上不是 openCV 的问题。我假设该应用程序将在 PC 上运行。你有两个选择:

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

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

第三种选择涉及在移动设备上录制视频,然后将其传输到 PC,但我想这不是一个选择。

于 2013-03-04T12:52:33.757 回答