在 OpenCV 上输入更高分辨率的视频文件时 fps 低

Posted

技术标签:

【中文标题】在 OpenCV 上输入更高分辨率的视频文件时 fps 低【英文标题】:Low fps on higher resolution video file input on OpenCV 【发布时间】:2020-06-30 11:40:03 【问题描述】:

我正在尝试使用 dlib 人脸检测器模糊人脸并打开 cv。该代码在从网络摄像头提供输入时工作正常,但当我提供 720p 或 1080p 视频文件作为输入时,它会提供低 fps。我的最终目标是在将具有任何分辨率的视频文件提供给代码时模糊面部。

我尝试使用“cap.set()”减小帧大小。但它不起作用。任何帮助将不胜感激。 output frame

【问题讨论】:

【参考方案1】:

如果您的代码已经适用于较低分辨率的视频,是否可以降低较高质量视频的分辨率?如果是这样,那么也许您可以尝试opencv.org中的以下代码:

import cv2
vidcap = cv2.VideoCapture('myvid2.mp4')
success,image = vidcap.read()
count = 0;
print "I am in success"
while success:
    success,image = vidcap.read()
    resized = cv2.resize(image, fx=0.5, fy=0.5, interpolation = cv2.INTER_LINEAR) 
    cv2.imwrite("%03d.jpg" % count, resize)     
    if cv2.waitKey(10) == 27:                     
        break
    count += 1

这应该会使视频的分辨率减半。您可以通过将 cv2.resize() 中的 0.5 参数更改为更小的参数来进一步降低分辨率。

【讨论】:

有什么方法可以输入任何分辨率的视频,模糊脸部并将其保存到新的视频文件中。有什么办法请告诉我。 @YashrajNigam 在找到并模糊面部之前降低分辨率有什么问题吗?恐怕我对opencv不是很熟悉,所以我不知道有什么其他的方法。 感谢 Bob 的建议我刚刚将输出保存到新的视频文件中,它工作正常。 @YashrajNigam

以上是关于在 OpenCV 上输入更高分辨率的视频文件时 fps 低的主要内容,如果未能解决你的问题,请参考以下文章

基于 OpenCV 的网络实时视频流传输

为啥移动设备上的浏览器可以播放比设备支持的分辨率更高的视频,但显示相同 Web 应用程序的原生应用程序可能会失败?

Python+OpenCV4:读写输入和输出的简单实践(图片视频摄像头)

如何在上传之前获取 html 文件输入的视频分辨率?

多核,使从内部函数调用的函数在第二个核心上运行。直接展示,opencv

使用OpenCV在图像和视频流中执行基于深度学习的超级分辨率