我需要一个移动相机作为网络摄像头。我需要进一步处理我的openCV应用程序的摄像头视频。但是可用于此目的的软件缺少api所需的文档。 (我的意思是如何访问手机摄像头界面)所以任何人都可以给我这个场景的好建议。提前致谢。
我认为,这实际上不是openCV的问题。我假设应用程序将在PC上运行。您有两种选择:
第三个选项涉及在移动设备上录制视频,然后将其传输到PC,但我想,这不是一个选项。
为了使其工作,我们首先需要一个移动客户端。您可以在Android手机上下载“IP webcam”应用程序。配置端口(例如: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;
}
}