Python环境下用OpenCV读取网络摄像头视频流的多线程优化技巧
目录

前言
最近在进行功能性测试时,要在Python环境下,使用OpenCV读取网络摄像头的视频流,然后用目标检测器对视频帧做后续处理。测试时发现,单线程情况下会出现较严重的时延,要是目标检测模型稍大些,比如YOLOv4这类,那情况会更严重。
后面出于对演示效果的考量,将模式从单线程改成了多线程,也就是专门用一个线程实时捕捉视频帧,当主线程有需要的时候,从子线程拷贝最近的帧来使用就行。经过这样的改动,不但时延基本消除了,整个流程的实时性也有了相应的提高,这算得上是很实用的技巧。
Python多线程编程
使用Python进行多线程编程并不复杂,Python的threading模块对相关操作进行了封装,编写功能类并继承threading.Thread就能实现自身逻辑。简单的代码示例如下所示:
class myThread(threading.Thread):
def __init__(self, name=None):
super(myThread, self).__init__(name=name)
def run(self):
print('=> Thread %s is running ...' % self.name)
thread = myThread()
thread.start()
下一篇 »
php项目源码下载,php 开源项目