[python+opencv] ip 카메라(cctv)로부터 영상 받기
오늘은 python과 opencv를 이용해서 ip 카메라(cctv)로부터 영상 신호를 받는 방법에 대해 공유하고자 합니다.
우선 usb 카메라(흔히 우리가 부르는 웹캠)를 통해 영상 신호를 받을 때는 이런 코드가 사용됩니다. python+opencv를 사용해보신 분에게는 아주 익숙한 한 줄일 것입니다.
capture = cv2.VideoCapture(0)
그런데 만약 ip 카메라로부터 신호를 받을 때는 다음과 같은 코드를 사용해야 합니다. 필요한 url은 각자 상황에 따라 다를 것입니다. 사용하시는 ip 카메라의 메뉴얼 등의 문서를 참고하시면 됩니다. 192.168.0.33:554/h264major는 제 상황에 맞는 코드라는 것을 기억해주세요.
capture = cv2.VideoCapture('rtsp://192.168.0.33:554/1/h264major')
보통 ip 카메라의 영상을 스트리밍할 때는 위와 같이 rtsp 프로토콜이 사용됩니다. rtsp는 real time streaming protocol의 약어로 그대로 번역하자면 실시간 스트리밍 프로토콜입니다. 프로토콜이라는 것은 통신규약이니까 rtsp는 간단히 실시간으로 동영상을 송수신할 때 지켜야할 규약이라고 생각하면 될 것 같습니다.
만약 username과 password가 필요한 경우에는 아래와 같은 방식으로 코딩해주면 됩니다.
capture = cv2.VideoCapture('rtsp://username:password@192.168.0.33:554/1/h264major')
usb 카메라만 연결해서 사용해보다가 ip 카메라도 연결해보니 재밌네요.
(이 글은 2022-04-26에 마지막으로 수정되었습니다)
관련 글
[1] [python] 외장 웹캠을 사용할 때 cv2.VideoCapture(1)로 했는데 안되면?
참고자료
[1] https://stackoverflow.com/questions/49978705/access-ip-camera-in-python-opencv