영상처리 1. Opencv 전처리

행동하는 개발자·2023년 3월 2일
0

video

목록 보기
1/4

영상 처리

VideoCapture

  • 동영상을 개별 Frame으로 하나씩 읽어들이는 기능

  • 카메라 출력은 카메라가 스트리밍 형태로 동작할 수 있을 때, 사용

  • 카메라의 장치번호를 통해 받아오고, 사용중인 플랫폼에서 카메라에 대한 접근권한 허용 필요

다양한 속성 가져오려고 설정하기

  • 카메라의 장치 번호(ID): cv2.VideoCapture(index), 보통 index = 0

추가적으로 카메라를 연결하여 외장 카메라를 사용하는 경우, 장치 번호가 1~n까지 순차적으로 할당됨.

import cv2

capture = cv2.VideoCapture(0)
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

while cv2.waitKey(33) < 0:
    ret, frame = capture.read()
    cv2.imshow("VideoFrame", frame)

capture.release()
cv2.destroyAllWindows()
  • 카메라의 Frame 너비 설정: capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

  • 카메라의 Frame 높이 설정: capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

  • 카메라의 프레임 받아오기: While문을 활용하여 받아 올수 있다.

  • 키 입력이 있을 때까지 프로그램 지연: cv2.waitKey(33) < 0, 33은 대기시간(mm)

delay가 0일 경우, 지속적으로 키 입력을 검사하여 프레임이 넘어가지 않는다. cv2.waitKey(33) < 0 != ord('q')로 사용할 경우, q 가 입력될 때, while 문이 종료된다.

다양한 속성 가져오기

  • 아래와 같은 명령어로 비디오 파일이 잘 열렸는지 아닌 지 확인할 수 있다.
if not cap.isOpened():
    print("Camera open failed!") # 열리지 않았으면 문자열 출력
    sys.exit()
  • 영상의 Frame 너비: 영상.get(cv2.CAP_PROP_FRAME_WIDTH)

  • 영상의 Frame 높이: 영상.get(cv2.CAP_PROP_FRAME_HEIGHT)

  • 영상의 FPS : 영상.get(cv2.CAP_PROP_FPS)

VideoWriter

  • VideoCapture로 읽어들인 개별 Frame을 동영상 파일로 저장

객체

  • 경로, 코덱유형, FPS, (너비, 높이) 를 차례로 받는다.

  • 코덱 유형 가져오기: cv2.VideoWriter_fourcc(*'XVID')

  • 너비와 높이는 반올림 해주어야 한다(int).

출처: https://076923.github.io/posts/Python-opencv-2/, https://deep-learning-study.tistory.com/107#:~:text=4.,%EC%9D%84%20%EB%B0%9B%EC%95%84%EC%98%AC%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.&text=retval%20%3A%20%EC%84%B1%EA%B3%B5%ED%95%98%EB%A9%B4%20True%2C%20%EC%8B%A4%ED%8C%A8%ED%95%98%EB%A9%B4%20False.

profile
끊임없이 뭔가를 남기는 사람

0개의 댓글