Я пытаюсь смоделировать IP-камеру с локальной USB-камеры, используя opencv и flask на примере flask basi * из 1017 *:
...
return Response(gen(),mimetype='multipart/x-mixed-replace; boundary=--jpgboundary')
...
frame = cap.read()
...
yield (b'--jpgboundary\r\n'+
b'Content-Type: image/jpeg\r\n'+
b'Content-Length: '+bytes(str(len(jpegEncodedImage)),'utf-8')+
b'\r\n\r\n' + jpegEncodedImage + b'\r\n')
...
Я могу получить доступ к этому потоку с помощью веб-браузера http://myip:5000/video_feed
. Я также могу получить доступ к этой моделируемой ip-камере на windows 10 с python 3.7.7, используя:
...
print("connect to camera at %s ..." % (ipAddressWithPort))
cap = None
while cap is None:
try:
cap = cv2.VideoCapture(ipAddressWithPort,cv2.CAP_IMAGES)
time.sleep(2)
except:
print("could not connect to %s:%s ... retry ..." % (host,port))
cap = None
time.sleep(1)
print("successfully connected to camera at %s (%s) ..." % (ipAddressWithPort,cap))
...
ret, frame = cap.read()
try:
cv2.imshow('frame',frame)
except Exception as e:
print("ret = %s (%s,%s) ... " % (ret,frame,str(e)))
time.sleep(1)
...
В моей системе Ubuntu я использую python 3.6.9. Запуск cap = cv2.VideoCapture("http://"+host+":"+port+"/video_feed")
приводит к следующему сообщению (об ошибке):
connect to camera at http://myip:5000/video_feed ...
[ERROR:0] global /io/opencv/modules/videoio/src/cap.cpp (116) open VIDEOIO(CV_IMAGES): raised OpenCV exception:
OpenCV(4.2.0) /io/opencv/modules/videoio/src/cap_images.cpp:253: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the name of file): http://myip:5000/video_feed in function 'icvExtractPattern'
successfully connected to camera at http://myip:5000/video_feed (<VideoCapture 0x7fd8a9835d30>) ...
ret = False (None) ...
ret = False (None) ...
Что я могу сделать, чтобы код работал в Ubuntu?
В основном я установил flask и opencv включен обе системы.