AI

영상인식과 opencv

수박쓰123 2024. 3. 20. 10:42

1. 영상인식 이란?

영상 인식 예시

 

 

 

- 그림으로 된 정보를 컴퓨터를 이용하여 처리하는 일

- 고도의 그래픽 기술과 함께 인공지능적인 요소가 필수적으로

   포함되어야 하는 분야

 

 

 

영상인식 기술

  • Classification(분류): 이미지가 속한 카테고리를 식별하는 과정이며, 이미지는 하나의 카테고리에만 할당됩니다.
  • Tagging(태깅): 하나의 이미지에서 여러 개체를 인식할 수 있는 더 높은 정확도의 분류 작업입니다. 하나의 이미지에 하나 이상의 태그가 할당될 수 있습니다.
  • Detection(검출): 개체를 찾기 위해 이미지에서 관심 객체 주위에 경계 상자를 배치합니다.
  • Segmentation(분할): 이미지의 요소를 가장 가까운 픽셀로 찾을 수 있으므로 매우 정확하고 정밀할 때 필요한 감지 작업입니다.

 

2. opencv란?

- Open Source Computer Vision의 약자로 영상 처리에 사용할 수 있는 오픈 소스 라이브러리

- 컴퓨터가 사람의 눈처럼 인식할 수 있게 처리해주는 역할

opencv 예시(사진 보정)

 

3. 세팅 방법

1. 우선 존재하는 가상환경 리스트를 확인

conda-env list

2. 가상환경 만들기(기존에 있는 환경을 사용하고 싶을 시 패스)

conda create -n 가상환경 이름

진행 중 Proceed는 y를 누른다

3. 가상환경 활성화

conda activate 가상환경 이름

4. Jupyter notebook에 가상환경 연결

프롬포트에  연결하고자 하는 가상환경이 활성화 되어있는 상태에서 아래 명령어 입력

pip install jupyter notebook

 

설치가 끝났다면 커널만 연결하면 끝이다.

python -m ipykernel install --user --name 가상환경이름 --display-name "커널출력이름"

5. 연결 확인

우선 jupyter notebook을 실행한다

jupyter notebook

 

new를 누른 후 Notebook을 클릭한다.

 

생성한 가상환경이 Start Other Kernel에 보이면 성공

 

 

4. opencv 이미지, 영상 출력 방법

이미지 출력 방법

import cv2

img_file = "이미지 경로" # 표시할 이미지 경로
img = cv2.imread(img_file)    # 이미지를 읽어서 img 변수에 할당

cv2.imshow('IMG', img)      # 읽은 이미지를 화면에 표시
cv2.waitKey()               # 키가 입력될 때 까지 대기
cv2.destroyAllWindows()     # 창 모두 닫기

 

영상 출력 방법

import cv2

video_file = "동영상 경로" # 동영상 파일 경로

cap = cv2.VideoCapture(video_file) # 동영상 캡쳐 객체 생성
if cap.isOpened():                 # 캡쳐 객체 초기화 확인
    while True:
        ret, img = cap.read()      # 다음 프레임 읽기
        if ret:                     # 프레임 읽기 정상
            cv2.imshow(video_file, img) # 화면에 표시
            cv2.waitKey(25)            # 25ms 지연(40fps로 가정)
        else:                       # 다음 프레임 읽을 수 없슴,
            break                   # 재생 완료
else:
    print("can't open video.")      # 캡쳐 객체 초기화 실패
cap.release()                       # 캡쳐 자원 반납
cv2.destroyAllWindows()

 

 

5. 문제 해결

(1) 이미지를 불러오는데 제목을 이미지 오른쪽 상단에 넣기

import cv2

img = cv2.imread('data/Teamin.jpg')

text = "xoals"
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1.0
font_thickness = 1

text_size = cv2.getTextSize(text, font, font_scale, font_thickness)[0]
image_height, image_width = img.shape[:2]

text_x = image_width - text_size[0] - 10
text_y = 30
position = (text_x, text_y)

cv2.putText(img, text, position, font, font_scale, (255, 255, 255), font_thickness, cv2.LINE_AA)

cv2.imshow('Teamin', img)
cv2.waitKey()
cv2.destroyAllWindows()

 

(2) 웹캠 영상을 불러오는데 웹캠 영상 왼쪽 상단에 HADURI 라고 출력
      웹캠 영상 오른쪽 하단에 본인 영어 이름 출력
      출력될 때는 컬러로 출력되지만
      녹화본은 그레이스케일로 녹화

import cv2

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

# 녹화 설정
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480), isColor=False)

# 텍스트 정보 설정
haduri_text = "HADURI"
susan_text = "Susan"
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
font_thickness = 2
text_color = (0, 255, 255)  # 노란색 (BGR)
text_position_haduri = (10, 30)
text_position_susan = (480, 450)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    
    # 텍스트 추가
    cv2.putText(frame, haduri_text, text_position_haduri, font, font_scale, text_color, font_thickness)
    cv2.putText(frame, susan_text, text_position_susan, font, font_scale, text_color, font_thickness)
    
    # 영상 표시
    cv2.imshow('Webcam', frame)
    
    # 영상 녹화 (그레이스케일로)
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    out.write(gray_frame)
    
    # 종료 조건
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 자원 해제
cap.release()
out.release()
cv2.destroyAllWindows()

'AI' 카테고리의 다른 글

Chat gpt로 볼링 점수 계산하기  (0) 2024.06.26
테트리오 랭크 예측  (0) 2024.06.12
과제  (0) 2024.04.03
사진을 다양하게 변형시켜보자  (0) 2024.03.27
[인공지능] 인공지능  (0) 2024.03.06