我计划建造一个 ROV,我正在研究我的视频提要 atm。我将使用光纤进行所有通信,并且正在修补 opencv 以使用 python 流式传输网络摄像头。我可能会选择使用 IP 摄像头,但我想先了解更多有关如何在 python 中从网络摄像头捕获帧的信息。因为我不知道我最终要使用什么,所以我买了一个便宜的无名 USB 网络摄像头,只是为了让一切正常工作。此摄像机源将用于导航,可能会使用单独的录像机来录制视频。
够了,现在到我的问题。我在捕捉帧时只有 8 FPS,但我怀疑这是由于便宜的网络摄像头。网络摄像头连接到 pcduino 3 nano,后者连接到用于控制推进器和读取传感器的 arduino。我从没想过如何在编码和解码图像中使用硬件,我对这部分了解得还不够,无法判断我是否可以使用任何硬件。
你们相信我的网络摄像头是瓶颈吗?使用 IP 摄像头是一个更好的主意,还是我应该能够使用连接到带有 opencv 的 pcduino 3 nano 捕获帧的网络摄像头或其他方式获得不错的 FPS?我尝试使用 Pygame 捕获帧,结果相同,我还尝试了 mjpg-streamer。
我用 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()
结果是:
cap.read() took: 0.118262052536
cap.read() took: 0.118585824966
cap.read() took: 0.121902942657
cap.read() took: 0.116680860519
cap.read() took: 0.119271993637
cap.read() took: 0.117949008942
cap.read() took: 0.119143009186
cap.read() took: 0.122378110886
cap.read() took: 0.116139888763
8