尝试从Logitech Brio相机(1080p时可支持60fps——在VLC中测试)捕获视频,但我似乎无法通过使用OpenCV VideoCapture获得高于30 fps的视频。在
关于我拥有和工作的信息:
编解码器相关设置:
cv2.VideoCapture(cv2.CAP_DSHOW + 1)
我使用了线程方法,如这里所建议的:OpenCV VideoCapture lag due to the capture buffer
基本上,我当前的代码有2个线程:1个用于grab()函数,1个用于retrieve()函数,并将检索到的图像保存为avi。在
运行grab()函数的线程如下所示:
def __frame_grab_worker(self, cap, cameraNumber):
try:
while(cap.isOpened()):
# sync with retrieve
acquired = self._retrievingLock[cameraNumber].acquire()
try:
cap.grab()
finally:
self._retrievingLock[cameraNumber].release()
if(self.interrupt == True):
break
finally:
self._cleanupLock.release()
检索并保存图像的线程如下所示:
^{pr2}$我分析了我的代码。一般来说,while look In __record
的每个循环之间有大约0.03秒的延迟,相当于每秒30帧。这在cap.retrieve()
和write
和{
我注意到,如果我注释掉对检索到的图像进行任何处理的代码部分(即out.write(frame)
或cv2.imshow(...)
),则{
因此,我假设问题是与MJPEG的DSHOW不允许超过30fps有关,或者与底层opencv代码有关。在
我进一步查看了opencv代码库(特别是videoio/src/cap)_显示.cpp&视频/src(amp;V)/上限cpp)找不到任何有用的东西。。。我可能错过了什么。在
如果任何人有一个解决方案或知道任何可以帮助我将不胜感激 提前感谢:)
目前没有回答
相关问题 更多 >
编程相关推荐