본문 바로가기
소프트웨어/파이썬

[파이썬] ESP CAM의 스트리밍 영상 opencv로 불러오기(수정)

by 만들오 2021. 6. 29.

2021.02.03 - [파이썬] - [파이썬] ESP CAM의 스트리밍 영상 opencv로 불러오기

 

[파이썬] ESP CAM의 스트리밍 영상 opencv로 불러오기

안녕하세요? 만들오 입니다. ESP CAM의 영상의 주소는 http://192.168.0.12/stream 과 같은 스트리밍 주소입니다. 일반적인 cv2.imread("http://192.168.0.12/stream") 과 같은 방법으로 열 수가 없습니다. imutil..

mandloh.tistory.com

 

지난 글에서 속도가 저하되는 부분이 있어 수정했습니다.

 

수정 내용은 주석에 기록했으니 참고해 주시기 바랍니다.

import cv2
import numpy as np
from urllib.request import urlopen

url = "http://192.168.0.12/stream" #ESP CAM의 영상 스트리밍 주소
stream = urlopen(url)
buffer = b''

while True:
    buffer += stream.read(4096)
    head = buffer.find(b'\xff\xd8')
    end = buffer.find(b'\xff\xd9')
    try: #가끔 비어있는 버퍼를 받아 오류가 발생함. 이를 위한 try문
        if head > -1 and end > -1:
            jpg = buffer[head:end+2]
            buffer = buffer[end+2:]
            img = cv2.imdecode(np.frombuffer(jpg, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
            cv2.imshow("stream", img)
            key = cv2.waitKey(1)
            if key == ord('q'):
                break
        #key = cv2.waitKey(1) if문으로 buffer를 확인하는데 delay를 주어 불필요한 지연 발생
        #if key == ord('q'):
            #break
	
    except:
    	pass
cv2.destroyAllWindows()
728x90

댓글