gpt4 book ai didi

opencv - 我可以创建虚拟网络摄像头并向其传输数据吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:20 24 4
gpt4 key购买 nike

我想将视频从 ffmpeg 流式传输到 OpenCV(一个视频处理库),但我很困惑。我的想法是创建一个虚拟网络摄像头设备,然后将视频从 ffmpeg 流式传输到该设备,然后该设备将像普通网络摄像头一样进行流式传输。我的动机是 OpenCV。 OpenCV 可以从网络摄像头中读取视频流,然后继续前进。

但这可能吗?我知道有创建虚拟网络摄像头的软件,但它可以接受视频流(例如来自 ffmpeg)并且可以像普通网络摄像头一样传输该视频吗? (我在 cygwin 环境中工作,如果这很重要的话)

最佳答案

您无需欺骗 OpenCV,使其认为该文件是网络摄像头。您只需要在每帧之间添加一个延迟。此代码将执行此操作:

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(int argc, const char * argv[]) {

VideoCapture cap;
cap.open("/Users/steve/Development/opencv2/opencv_extra/testdata/python/videos/bmp24.avi");
if (!cap.isOpened()) {
printf("Unable to open video file\n");
return -1;
}
Mat frame;
namedWindow("video", 1);
for(;;) {
cap >> frame;
if(!frame.data)
break;
imshow("video", frame);
if(waitKey(30) >= 0) //Show each frame for 30ms
break;
}

return 0;
}

编辑:尝试读取由 ffmpeg 创建的文件:

    for(;;) {
cap >> frame;
if(frame.data)
imshow("video", frame); //show frame if successfully loaded
if(waitKey(30) == 27) //Wait 30 ms. Quit if user presses escape
break;
}

我不确定当 ffmpeg 仍在创建它时它将如何处理在文件末尾获取部分帧。

关于opencv - 我可以创建虚拟网络摄像头并向其传输数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com