반응형
cv2로 ipcamera를 연결하려면 rtsp 주소가 필요합니다.
여기서 RTSP란 Real Time Streaming Protocol의 약자로 스트리밍 미디어 서버를 컨트롤 하기위한 네트워크 프로토콜입니다.
RTSP 주소 알아보기
IPCAMERA(이하 카메라라고 칭함)가 부여 받은 아이피 주소를 알아야합니다.
카메라 제조사의 소프트웨어를 보시면 ip finder 프로그램을 제공합니다.
192.168.0.48 이런 아이피 주소를 부여 받습니다(자신의 아이피 주소마다 상이함)
동영상플레이어로 주소열기(네트워크 스트림)하고 아래 예시의 주소를 입력하면 rtsp 접속이 가능합니다
rtsp 포트번호는 따로 설정하지 않으면 기본값이 554입니다
- 한화 테크윈 : rstp://카메라IP:554/profile2/media.smp ( H.264 )
- 한화 테크윈 : rtsp://카메라IP:554/profile1/media.smp( MPGE)
- 세연테크(플렉스와치) : rtsp://카메라IP:554/cam0_0
동영상 플레이어로 접속하는 경우 아이디와 비밀번호를 요구하는 창이 뜹니다.
파이썬 코드에서는 이런 창을 띄워서 아이디,비밀번호를 입력하기엔 복잡하니 미리 입력해둡시다
rtsp://id:pw@ip:port/cam0_0
ID와 PW는 기본적으로 admin admin 이나 root root로 설정되어 있습니다. (제가 사용해본 카메라는 그랬습니다)
그러면 이제 rtsp를 연결해 영상을 출력해봅시다
import cv2
class streaming():
def __init__(self,ip,id,pw,rport):
self.ip = ip
self.id = id
self.pw = pw
self.rport = rport
self.url = f'rtsp://{id}:{pw}@{ip}:{rport}/cam0_0'
def video(self):
cap = cv2.VideoCapture(self.url)
while True:
ret, frame = cap.read()
cv2.imshow('ipcamera',frame)
k = cv2.waitKey(1) & 0xff
if k == 27 : break
cap.release()
cv2.destroyAllWindows()
test = streaming('192.168.0.48','root','root','554')
test.video
cv2로 rtsp 영상을 재생하는 클래스를 만들었습니다
객체 생성시 전달받은 인자들로 rtsp 주소를 만들었습니다
cap = cv2.VideoCapture(self.url)
rtsp로 카메라에 연결하는 부분입니다.
ret, frame = cap.read()
카메라의 프레임을 받아오는 부분입니다
ret은 프레임을 정상적으로 받아왔는지 True,False 값을 가진 변수입니다.
frame은 현재 프레임의 이미지 numpy.ndarray 값입니다
cv2.imshow('ipcamera', frame)
이미지를 화면에 보여주는 함수입니다
ipcamera는 윈도우 창 이름으로 아무거나 써도 상관없습니다
k = cv2.waitKey(1) & 0xff
if k == 27 : break
cv2.waitkey() 는 키 입력을 기다리는 대기 함수로 현재 1을 넣어줬기에 1ms만큼 대기합니다
k 에 입력된 키 값을 저장하고 27(아스키 코드 ESC)가 입력되면 while문을 빠져나오는 부분입니다
cap.release()
cv2.destroyAllWindows()
while문을 빠져나오면 이미지 창을 종료하는 부분입니다
release() 저장하고 종료하는 부분입니다 #현재는 없어도 무방한 부분
destroyAllWindows() cv.imshow()에서 생성된 이미지 창을 종료합니다
다음 포스팅에서는 이미지를 동영상으로 저장하는것을 알려드리도록 하겠습니다
'파이썬 > OpenCV' 카테고리의 다른 글
파이썬 모듈 : OpenCV 가장자리 검출 (0) | 2023.03.26 |
---|---|
파이썬 모듈 : OpenCV 이미지 확대, 회전, 자르기 (0) | 2023.03.25 |
파이썬 모듈 : OpenCV 읽기, 쓰기, 필터링 (0) | 2023.03.24 |
이미지의 크기 변환 cv2.resize() (0) | 2022.11.17 |
CV2로 IPCAMERA 영상을 동영상으로 저장 해보자 (0) | 2022.11.16 |