CV2로 IPCAMERA 영상을 동영상으로 저장 해보자

2022. 11. 16. 23:15·파이썬/OpenCV
반응형
먼저 코드를 보여드리고 설명드리겠습니다
import cv2
import os, datetime

class capture():
    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)
        fourcc = cv2.VideoWriter_fourcc(*'XVID')
        width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
        height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
        fps = 15

        t = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.avi'
        if not os.path.isdir('C:\Video') : os.mkdir('C:\Video')
        path = os.path.join('C:\Video',t)
        out = cv2.VideoWriter(path, fourcc, fps, (width,height))

        while True:
            _, frame = cap.read()
            out.write(frame)
            
            frame = cv2.resize(frame, dsize=(0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
            cv2.imshow('recoding',frame)

            k = cv2.waitKey(1) & 0xff
            if k == 27: break

        cap.release()
        out.release()
        cv2.destroyAllWindows()

test = capture('192.168.0.48','root','root','554')
test.video()
코드설명
fourcc = cv2.VideoWriter_fourcc(*'XVID')
  • 비디오를 저장할 코덱을 지정하는 부분입니다 
  • DIVX ( DIVX MPEG-4) , FMP4 ( FFMPEG MPEG-4) , X264 (H.264/AVC) , MJPG (Motion-JPEG)  등이 있습니다
  • 코덱마다 지원하는 확장자들이 다릅니다 avi mov mp4 등 
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = 15
  • 영상의 높이, 넓이를 가져는 부분입니다
  • 동영상 파일로 저장할 때 해상도를 지정해 줄 변수입니다
  • fps 는 1초에 몇장의 이미지를 저장할지 지정한 변수입니다
t = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.avi'
if not os.path.isdir('C:\Video') : os.mkdir('C:\Video')
path = os.path.join('C:\Video',t)
out = cv2.VideoWriter(path, fourcc, fps, (width,height))
cv2.VideoWriter(filename, fourcc, fps, frameSize, isColor)
filename : 비디오 파일 이름 ( 파일의 경로가 포함되어 있어야 합니다)
fourcc : 코덱명
fps : 초당 프레임 수 
frameSize : 프레임 크기. 튜플로 지정해 주어야 합니다
isColor : True일시 컬러, False 흑백. 기본값은 True
  • t는 동영상 파일의 이름을 지정한 변수입니다 저는 datatime 모듈을 이용해 현재시간의 연-월-일-시-분-초.avi로 저장할 것입니다
  • 두번째줄은 C드라이브에 Video 폴더가 있는지 검사하고 없으면 폴더를 생성하는 부분입니다
  • path는 동영상 파일 저장 경로입니다. 
  • out 변수의 설명은 위 VideoWriter 설명란에 있습니다 
out.write(frmae)
  • 현재 이미지(frame)를 out에 저장합니다
frame = cv2.resize(frame, dsize=(0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
  • 제 카메라 해상도가 FHD(1920*1080)로 모니터 화면을 가득 채워서 imshow로 보여질 이미지 사이즈를 줄여줬습니다
  • 자세한 설명은 다른 포스팅에서 따로 하겠습니다
out.release()

드디어 제대로 사용할 곳이 생겼습니다 

영상을 저장하고 닫는 부분입니다

 

그대로 가져다 fps만 카메라 설정값에 맞춰서 사용하시면 문제 없습니다
저작자표시 비영리 변경금지 (새창열림)

'파이썬 > OpenCV' 카테고리의 다른 글

파이썬 모듈 : OpenCV 가장자리 검출  (0) 2023.03.26
파이썬 모듈 : OpenCV 이미지 확대, 회전, 자르기  (1) 2023.03.25
파이썬 모듈 : OpenCV 읽기, 쓰기, 필터링  (0) 2023.03.24
이미지의 크기 변환 cv2.resize()  (0) 2022.11.17
CV2로 IPCAMERA 영상을 출력해보자  (0) 2022.11.16
'파이썬/OpenCV' 카테고리의 다른 글
  • 파이썬 모듈 : OpenCV 이미지 확대, 회전, 자르기
  • 파이썬 모듈 : OpenCV 읽기, 쓰기, 필터링
  • 이미지의 크기 변환 cv2.resize()
  • CV2로 IPCAMERA 영상을 출력해보자
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (695) N
      • 상품 추천 (196) N
      • MongoDB (4)
      • 하드웨어 (14) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (13) N
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (41) N
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    unity
    C#
    카페24리뷰
    list
    rtsp
    devlife
    긴유통기한우유
    codingcommunity
    스크립트 실행
    스크립트 실행 순서
    ipcamera
    믈레코비타멸균우유
    라떼우유
    learntocode
    셀레니움
    스마트스토어리뷰
    programmerlife
    리뷰관리
    상품 리뷰 크롤링
    카페24리뷰이관
    codingtips
    리스트
    cv2
    파이썬
    programming101
    유니티
    리뷰이관
    쇼핑몰리뷰
    appdevelopment
    Python
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
CV2로 IPCAMERA 영상을 동영상으로 저장 해보자
상단으로

티스토리툴바