How to parse mjpeg http stream from ip camera?

后端 未结 5 1699
天命终不由人
天命终不由人 2020-11-27 10:44

Given below is the code written for getting live stream from an IP Camera.

from cv2 import *
from cv2 import cv
import urllib
import numpy as np
k=0
capture=         


        
5条回答
  •  暖寄归人
    2020-11-27 11:18

    Here is an answer using the Python 3 requests module instead of urllib.

    The reason for not using urllib is that it cannot correctly interpret a URL like http://user:pass@ipaddress:port

    Adding authentication parameters is more complex in urllib than the requests module.

    Here is a nice, concise solution using the requests module:

    import cv2
    import requests
    import numpy as np
    
    r = requests.get('http://192.168.1.xx/mjpeg.cgi', auth=('user', 'password'), stream=True)
    if(r.status_code == 200):
        bytes = bytes()
        for chunk in r.iter_content(chunk_size=1024):
            bytes += chunk
            a = bytes.find(b'\xff\xd8')
            b = bytes.find(b'\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)
    else:
        print("Received unexpected status code {}".format(r.status_code))
    

提交回复
热议问题