使用Python的以太网高FPS livestream

2024-04-26 12:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我计划建造一个遥控潜水器,我正在研制我的视频自动取款机。我将使用光纤进行所有的通信,我正在修改opencv,用python流式传输一个网络摄像头feed。我可能会选择使用IP摄像机,但我想先了解如何用python从网络摄像头捕捉帧。因为我不知道我最后会用什么,所以我买了一个便宜的,因为他们买了一个非命名的USB网络摄像头,只是为了让一切正常工作。这个摄像头将用于导航,一个单独的录像机可能会用于录制视频。在

够了,现在谈谈我的问题。我只得到8帧时,我捕捉帧,但我怀疑这是由于廉价的网络摄像头。网络摄像头连接到一个pcduino3 nano,后者连接到一个用于控制推进器和读取传感器的arduino。我从来没有想过如何利用硬件来编码和解码图像,我对这一部分的了解还不足以告诉我是否可以使用任何硬件。在

你们相信我的网络摄像头是瓶颈吗?使用IP摄像头是个更好的主意,还是我应该用一个摄像头连接到一个pcduino3 nano捕捉帧上,或者用opencv或者其他方式来获得一个像样的FPS?我尝试用Pygame捕捉帧,这给了我同样的结果,我也尝试了mjpg拖缆。在

我用Python编程,这是我做的测试:

import cv2, time
FPS = 0
cap = cv2.VideoCapture(0)

last = time.time()

for i in range(0,100):
    before = time.time()
    rval, frame = cap.read()
    now = time.time()
    print("cap.read() took: " + str(now - before))
    if(now - last >= 1):
        print(FPS)
        last = now
        FPS = 0
    else:
        FPS += 1
cap.release()

结果如下:

^{pr2}$

Tags: ip网络视频硬件nanotimecv2opencv
1条回答
网友
1楼 · 发布于 2024-04-26 12:22:46

网络摄像头应该在其规格中明确说明其帧速率,这将明确地告诉您瓶颈是否是摄像头。在

但是,我想瓶颈是pcDuino3。很可能它不能很快解码视频,这导致低帧速率。你可以在一台实际的计算机上验证这个代码。另外,我相信OpenCV和mjpg streamer都使用libjpeg来解码jpeg帧,所以它们相似的帧速率也就不足为奇了。在

相关问题 更多 >