我需要一部移动相机作为网络摄像头。我需要进一步处理我的openCV应用程序的摄像头视频。但是可用于此目的的软件缺少api所需的文档。 (我的意思是如何访问手机摄像头界面)所以任何人都可以给我这个场景的好建议。 提前谢谢。
答案 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上运行。您有两种选择:
尝试使用特定于设备的驱动程序与手机的相机连接。也许他们中的一些人支持这样的功能。
为您的手机编写应用程序,该应用程序将通过WiFi,蓝牙或其他方式传输视频。然后编写一组驱动程序,它们将尝试检索视频源并作为网络摄像头提供给操作系统。
第三个选项涉及在移动设备上录制视频,然后将其传输到PC,但我猜,它不是一个选项。