J'utilisais ma caméra via opencv et soudainement après le redémarrage, j'ai exécuté mon code, il affiche l'erreur ci-dessous:
[ WARN:0] global /io/opencv/modules/videoio/src/cap_v4l.cpp (802) open VIDEOIO ERROR: V4L: can't open camera by index 0
Traceback (most recent call last):
File "test.py", line 20, in <module>
retval, buffer_img = cv2.imencode('.jpg', frame)
cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:877: error: (-215:Assertion failed) !image.empty() in function 'imencode'
cap = cv2.VideoCapture(0) # here it throws an error
import json
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
retval, buffer_img = cv2.imencode('.jpg', frame)
resdata = base64.b64encode(buffer_img)
resdata = "data:image/png;base64,"+ str(resdata.decode("utf-8"))
PARAMS = {'image': resdata}
# Our operations on the frame come here
#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
J'ai aussi essayé avec cap = cv2.VideoCapture(1)
mais cela montre que la caméra ne peut pas être trouvée
Comment puis-je résoudre ce problème?
Je n'irai pas dans cette partie Ce que vous essayez de faire, voici juste un bloc de code qui peut ouvrir votre caméra à chaque fois que vous l'exécutez,
python: 3.7.3
OpenCV: 4.1.0
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
J'ai eu le même problème, il suffit de changer 0 à 1, puis à -1 et de nouveau à 0. Je ne sais pas pourquoi cela a fonctionné pour moi.