在YoloV4演示中更改视频流分辨率

时间:2020-06-06 15:03:35

标签: opencv video-streaming yolo

这是加载Yolov4的实时流演示时显示的内容:

网络摄像头索引:2 [WARN:0]全局../modules/videoio/src/cap_gstreamer.cpp(935)打开OpenCV | GStreamer警告:无法查询视频位置:状态= 0,值= -1,持续时间= -1 视频流:2304 x 1536 对象:

然后它开始以2 fps的速度查找对象。

如何将视频流分辨率更改为1080p或720p?帧速率非常慢,这似乎可以解决。

在makefile或cfg文件夹中找不到它。有什么想法吗?这是opencv问题吗?

谢谢!

cfg设置:

[net]
batch=64
subdivisions=8
# Training
#width=512
#height=512
width=320
height=320
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.0013
burn_in=1000
max_batches = 500500
policy=steps
steps=400000,450000
scales=.1,.1

我尝试使用内置摄像头并连接了手机(IP),两者均获得了1080的流畅效果。我找不到任何地方可以更改固定在2304x1536上的网络摄像头设置。相机设置将位于何处?

1 个答案:

答案 0 :(得分:0)

我自己寻找解决方案后,终于找到了!

在darknet / src /文件夹中是一个名为“ image_opencv.cpp”的文件。在597和598行,您将找到以下2条带注释的命令:

//cap->set(CV_CAP_PROP_FRAME_WIDTH, 1280); 

& 

//cap->set(CV_CAP_PROP_FRAME_HEIGHT, 960);

尝试了这些命令后,出现了更多错误,这是由于使用OpenCV 4.1.1的yolov4(和我的安装)引起的。里面有不同的语法。如果将以下两个命令替换为以下命令,则分辨率应更改为1920x1080:

cap->set(cv::CAP_PROP_FRAME_WIDTH, 1920);

cap->set(cv::CAP_PROP_FRAME_HEIGHT, 1080);

请注意,已删除注释斜杠以激活命令。