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 영상을 출력해보자
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바