-
python openCV로 외부 IP cam 영상 제어(onvif)프로그래밍 언어 2022. 11. 16. 15:28
이번에 일정 시간에 한 번씩 외부에 있는 영상을 사진으로 저장해야 하는 일이 생겼다.
다른 건 비용이 비싸서 최대한 저렴하게 알아본 결과
IP Cam + LTE모뎀으로 조합했다.
IP Cam은 7만원대, LTE모뎀은 16만원대?였나.. 요금제는 고정IP로 매월 3만원대....
더 싸게 할 수도 있긴하던데... 과제비 꿀꺽ㅋ
(카메라 더 비싼걸 살 걸 그랬다... 발열이 있네?;;)
우선 카메라 설정부터 하여 'ispy'라는 프로그램으로 PC에서 접속 확인을 했다.
아래는 셋팅 및 영상 확인 순서.
영상은 파이썬, openCV로 제어했다.
openCV는 알다시피
> pip install opencv-python
코드는 복붙이 정석이지..ㅋㅋㅋㅋ
import cv2import datetimeimport os
def writeVideo():#현재시간 가져오기currentTime = datetime.datetime.now()#RTSP를 불러오는 곳video_capture = cv2.VideoCapture('rtsp://userID:password12@192.168.100.98:554/stream1')# 웹캠 설정video_capture.set(3, 1280) # 영상 가로길이 설정video_capture.set(4, 720) # 영상 세로길이 설정fps = 12# 가로 길이 가져오기streaming_window_width = int(video_capture.get(3))# 세로 길이 가져오기streaming_window_height = int(video_capture.get(4))#현재 시간을 '년도 달 일 시간 분 초'로 가져와서 문자열로 생성fileName = str(currentTime.strftime('%Y %m %d %H %M %S'))
#파일 저장하기 위한 변수 선언path = f'C:\\Users\\USER\\Desktop\\Projects\\05 Sewage Level Meter\\SourceCode\\python\\Cam\\sourceCode\\{fileName}.avi'# DIVX 코덱 적용 # 코덱 종류 # DIVX, XVID, MJPG, X264, WMV1, WMV2# 무료 라이선스의 이점이 있는 XVID를 사용fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')# 비디오 저장# cv2.VideoWriter(저장 위치, 코덱, 프레임, (가로, 세로))out = cv2.VideoWriter(path, fourcc, fps, (streaming_window_width, streaming_window_height))
while True:ret, frame = video_capture.read()# 촬영되는 영상보여준다. 프로그램 상태바 이름은 'streaming video' 로 뜬다.cv2.imshow('streaming video', frame)# 영상을 저장한다.out.write(frame)# 1ms뒤에 뒤에 코드 실행해준다.k = cv2.waitKey(1) & 0xff#키보드 esc 누르면 종료된다.if k == 27:cv2.imwrite(f'C:\\Users\\USER\\Desktop\\Projects\\05 Sewage Level Meter\\SourceCode\\python\\Cam\\sourceCode\\shot.png', frame)breakvideo_capture.release() # cap 객체 해제out.release() # out 객체 해제cv2.destroyAllWindows()
if __name__ == "__main__":writeVideo()https://pcseob.tistory.com/25 (소스 참고. 감사합니다ㅋㅋ)
소스에서
video_capture = cv2.VideoCapture('rtsp://userID:password123@192.168.100.98:554/stream1')
이 부분의 주소를 ispy 사진 밑에서 두번째 란에 ID와 주소를 넣으면 된다.
실행 결과>
esc 키 누르면 끝나는 지점에 마지막 Frame을 png 파일로 저장했다.
일정 시간마다 접속해서 저장만 하면 끝ㅋ
'프로그래밍 언어' 카테고리의 다른 글
Python 셀레니움 이미지 크롤링 (0) 2020.11.02 C언어) 간단하게 엑셀 파일로 저장하기 (0) 2019.07.10