OpenCV 과제 #3

Tsi0511·2023년 9월 11일
0

1. 사진 불러오기

  • 이미지를 불러와서 창으로 출력
  • q키를 누르면 창이 꺼지게 만들기
import cv2

# 이미지 파일 경로 설정
image_path = 'data/Dog.jpg'

# 이미지 불러오기
img = cv2.imread(image_path)

if img is not None:
    
    cv2.imshow('Img', img) # 이미지 창 열기

    # q 키를 누를 때까지 대기 (키보드 이벤트 처리)
    while True:
        key = cv2.waitKey(1) & 0xFF  # 키 이벤트를 받음
        if key == ord('q'):
            break

    cv2.destroyAllWindows()  # 창 닫기
else:
    print('이미지를 불러올 수 없습니다.')

2. 동영상 불러오기

  • 동영상을 불러와서 창으로 출력
  • q키를 누르면 창이 꺼지게 만들기
import cv2

# 동영상 파일 경로 설정
video_path = '동영상_파일_경로.mp4'

# 동영상 불러오기
cap = cv2.VideoCapture(video_path)

# 동영상 불러오기에 성공했는지 확인
if not cap.isOpened():
    print('동영상을 열 수 없습니다.')
else:
    while True:
        # 프레임 읽기
        ret, frame = cap.read()

        if ret:
            # 프레임을 창으로 출력
            cv2.imshow('Video', frame)
        else:
            # 동영상의 끝에 도달하면 다시 시작 (무한 루프)
            cap.set(cv2.CAP_PROP_POS_FRAMES, 0)

        # q 키를 누를 때까지 대기 (키보드 이벤트 처리)
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break

    # 동영상 재생이 끝나면 창 닫기
    cap.release()
    cv2.destroyAllWindows()

3. 웹캠 불러오기

  • 웹캠을 불러와서 창으로 출력
  • 창의 크기를 가로 640, 세로 480으로 설정
  • q키를 누르면 창이 꺼지게 만들기
import cv2

# 웹캠 열기
cap = cv2.VideoCapture(0)  # 0은 기본 웹캠을 의미한다.

# 웹캠 설정 (가로 640, 세로 480)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

while True:
    # 프레임 읽기
    ret, frame = cap.read()

    if ret:
        # 웹캠 영상을 창으로 출력
        cv2.imshow('Webcam', frame)
    else:
        print('웹캠에서 프레임을 읽을 수 없습니다.')

    # q 키를 누를 때까지 대기 (키보드 이벤트 처리)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 웹캠 사용 종료
cap.release()
cv2.destroyAllWindows()

4.그레이 스케일 출력

  • 웹캠을 불러오고 그레이스케일로 웹캠을 창으로 출력
  • q키를 누르면 창이 꺼지게 만들기
import cv2

# 웹캠 열기
cap = cv2.VideoCapture(0)

while True:
    # 프레임 읽기
    ret, frame = cap.read()

    if ret:
        # 프레임을 그레이스케일로 변환
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        # 그레이스케일 프레임을 창으로 출력
        cv2.imshow('Grace Webcam', gray_frame)
    else:
        print('웹캠에서 프레임을 읽을 수 없습니다.')

    # q 키를 누를 때까지 대기 (키보드 이벤트 처리)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 웹캠 사용 종료
cap.release()
cv2.destroyAllWindows()

5. 텍스트와 도형 출력

  • 직선
  • 사각형
  • 텍스트
import cv2
import numpy as np

# 흰색 바탕에 그릴 이미지 생성
width, height = 640, 480
image = np.zeros((height, width, 3), dtype=np.uint8)  # 3채널 이미지 (BGR)

# 직선 그리기 (파란색)
cv2.line(image, (100, 100), (300, 300), (255, 0, 0), 2)

# 사각형 그리기 (초록색)
cv2.rectangle(image, (200, 200), (400, 400), (0, 255, 0), 2)

# 원 그리기 (빨간색)
cv2.circle(image, (300, 300), 100, (0, 0, 255), 2)

# 텍스트 추가 (흰색)
cv2.putText(image, "OpenCV Drawing", (100, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)

# 이미지 창에 출력
cv2.imshow('OpenCV Drawing', image)

# 아무 키나 누를 때까지 대기
cv2.waitKey(0)

# 창 닫기
cv2.destroyAllWindows()
profile
프론트 공부하는 중..

0개의 댓글

관련 채용 정보