我在我的RPI 4上(甚至在我的Mac上)用OpenCV和Python处理IP Camera图像有困难。我的项目是获取IP Camera图像(RGB-1920 x 1080)并用对象检测算法处理它们。我没有任何实时限制。如果我能每5分钟运行一次算法,那就完美了。
OpenCV版本:4.1.1 Python版本:3.6.5
首先,我用之前(用同一台相机)录制的图像库测试了这个算法,效果非常好。
尽管如此,一旦我尝试使用视频流我得到了一个关于过读的错误。我想,我应该有一个关于我管理图像流的方式的问题。
import cv2, time
cap = cv2.VideoCapture(‘URL’)
if (cap.isOpened()== False):
print("Error opening video stream or file")
sampleTime = 10 # in seconds
imgCounter = 0
startTime = time.time()
while True:
ret, frameCaptured = cap.read()
if time.time() - startTime >= sampleTime and ret == True:
startTime = time.time()
# Do some stuff here
time.sleep(5)
cv2.imshow('Captured Image', frameCaptured)
imgCounter += 1
print("Image:",imgCounter)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
即使正常记录了第一张图像,我也会系统性地得到一个错误:图片:1 [mjpeg@0x7ff6ac808000]被过度读取8
然后变量"ret"变为False。注意,如果没有条件"ret == True",我看到第二张图像上出现一个绿色区域,然后执行停止。
1条答案
按热度按时间yr9zkbsy1#
我有一个类似的问题,从一个IP相机阅读,发现我最初是设置我的图像大小为VGA,然后缩小到后来的QVGA。
(Code下面是来自IP摄像头而不是PC端)
因此,opencv试图将QVGA图像放入VGA框中,导致过读。这是我最好的猜测,可能不完全准确,但修复了我的错误。