我计划建造一个遥控潜水器,我正在研制我的视频自动取款机。我将使用光纤进行所有的通信,我正在修改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}$
网络摄像头应该在其规格中明确说明其帧速率,这将明确地告诉您瓶颈是否是摄像头。在
但是,我想瓶颈是pcDuino3。很可能它不能很快解码视频,这导致低帧速率。你可以在一台实际的计算机上验证这个代码。另外,我相信OpenCV和mjpg streamer都使用libjpeg来解码jpeg帧,所以它们相似的帧速率也就不足为奇了。在
相关问题 更多 >
编程相关推荐