Je travaille sur l'utilisation de Python 3 pour prendre le flux d'une caméra Web IP et l'afficher sur mon ordinateur. Le code suivant ne fonctionne que dans python 2,7Python 3 IP Webcamera octet Erreur
import cv2
import urllib.request
import numpy as np
stream=urllib.request.urlopen('http://192.168.0.90/mjpg/video.mjpg')
bytes=''
while True:
bytes+=stream.read(16384)
a = bytes.find('\xff\xd8')
b = bytes.find('\xff\xd9')
if a!=-1 and b!=-1:
jpg = bytes[a:b+2]
bytes= bytes[b+2:]
i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.IMREAD_COLOR)
cv2.imshow('i',i)
if cv2.waitKey(1) ==27:
exit(0)
Cependant quand j'essaie sur Python 3 j'obtenir l'erreur suivante
bytes+=stream.read(16384)
TypeError: Can't convert 'bytes' object to str implicitly
Cela fonctionne parfaitement en 2.7, mais je ne peux pas trouver un moyen de le faire à travailler en 3, des idées?
J'ai essayé ce que vous dit mais maintenant il jette cette erreur sur la ligne 9 'a = bytes.find ('\ xff \ xd8') TypeError: 'str' ne supporte pas l'interface tampon' –
' a = bytes.find (b '\ xff \ xd8 ') 'partout où vous utilisez des octets, vous devez le précéder d'un' b' –