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

Change video stream resolution in YoloV4 demo

以下是加载 Yolov4 的实​​时流演示时显示的内容:

网络摄像头索引:2 [WARN:0] 全局 ../modules/videoio/src/cap_gstreamer.cpp (935) 打开 OpenCV | GStreamer 警告:无法查询视频位置:status=0,value=-1,duration=-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

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

我自己四处寻找这个问题的解决方案后,终于找到了!

在 darknet/src/ 文件夹中有一个名为“image_opencv.cpp”的文件。在第 597 和 598 行,您会发现以下 2 个注释命令:

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

& 

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

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

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

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

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