2022-03-31 22:56:59

오늘은 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   

[2] https://ko.wikipedia.org/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84_%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C