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번의 경우 기본 카메라를 의미한다.
'AIFEEL' 카테고리의 다른 글
절대경로와 상대경로 (0) | 2022.03.02 |
---|---|
YOLOv5 무작정 돌리기 (1) | 2022.02.25 |
구글링해도 안나오는 wandb 사용가이드 - wandb 결과 시각화, 프로젝트 이동 (0) | 2022.02.23 |
[semantic Segmentation] 시맨틱 세그멘테이션으로 도로 영역 검출하기 (0) | 2022.01.05 |
[사이킷런] 머신러닝 알고리즘 (0) | 2021.09.27 |