본문 바로가기

AIFEEL

OpenCV 이미지 & 동영상 출력

 

 

 

OpenCV에서 주로 활용하는 이미지, 동영상, 카메라 기능에 대해 정리해보았다.

 

src = cv2.imread("../Daebak.jfif", cv2.IMREAD_GRAYSCALE)

cv2.namedWindow("src", flags=cv2.WINDOW_FREERATIO)
cv2.resizeWindow("src", 400, 200)
cv2.imshow("src", src)
cv2.waitKey(0)
cv2.destroyWindow("src")

 

위의 코드는 이미지를 출력하는 기본적인 코드이다.

 

 

# 마우스 콜백 적용
# 마우스 왼쪽 버튼을 누를 때, radius 크기의 파란색 원을 그려 출력
# 마우스 스크롤 이벤트를 통해 원의 크기 조젤 가능
# 양수일 때, 스크롤업/ 음수일때 스크롤 다운

import cv2
import numpy as np

def mouse_event(event, x, y, flags, param):
    global radius

    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(param, (x, y), radius, (255, 0, 0), 2)
        cv2.imshow("draw", src)

    elif event == cv2.EVENT_MOUSEWHEEL:
        if flags > 0:
            radius += 1
        elif radius > 1:
            radius -= 1

radius = 3
src = np.full((500, 500, 3), 255, dtype=np.uint8)

cv2.imshow("draw", src)
cv2.setMouseCallback("draw", mouse_event, src)
cv2.waitKey()
cv2.destroyAllWindows()

마우스 커서를 이용해서 원을 그리는 코드이다.

마우스 콜백 함수를 활용한다.

 


동영상 출력

 

import cv2

capture = cv2.VideoCapture("Star.mp4")

while True:
    ret, frame = capture.read()

    if(capture.get(cv2.CAP_PROP_POS_FRAMES) == capture.get(cv2.CAP_PROP_FRAME_COUNT)):
        capture.open("Star.mp4")

    cv2.imshow("VideoFrame", frame)
    if cv2.waitKey(33) == ord('q'): break

capture.release()
cv2.destroyAllWindows()

 

동영상을 불러오는 코드이다.

 


카메라 출력

import cv2

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

while True:
    ret, frame = capture.read()
    if ret == True:
        cv2.imshow("VideoFrame", frame)
        if cv2.waitKey(33) == ord('q'): break
    else:
        break

capture.release()
cv2.destroyAllWindows()

 

카메라를 불러오는 함수이다.

둘째 줄의 VideoCapture 의 경우, 디바이스 넘버를 작성해주면 된다.

일반적으로 0번의 경우 기본 카메라를 의미한다.