OpenCV 공부 - OpenCV gongbu

시리즈

1.[OpenCV] # 0. 이미지 출력 방법

OpenCV시리즈 첫번째, 이미지 출력 함수에 대해 다뤘습니다.

2022년 6월 21일

2.[OpenCV] # 1. 동영상 & 카메라 출력 방법

openCV 2번째. 동영상 출력과 웹캠 출력 방법에 대해 서술하였습니다.

2022년 6월 21일

3.[OpenCV] # 2. 이미지 대칭 및 색 변환

이미지 대칭 flip함수와 색 변환 cvtColor함수에 대해 다뤘습니다.

2022년 6월 24일

글모음

프로젝트를 하는데 OpenCV가 필요해서 개발을 위해 정리하는 중

freeCodeCamp.org 라는 유투브 계정의 튜토리얼 영상을 보면서 공부중이다.

3시간 41분짜리 영상이고 한글자막은 없지만 영어가 그렇게 어렵지는 않다.

Github 라이브러리는 여기

github.com/jasmcaus/opencv-course

jasmcaus/opencv-course

Learn OpenCV in 4 Hours - Code used in my Python and OpenCV course on freeCodeCamp. - jasmcaus/opencv-course

github.com

[ 목차 ]

1. read.py ( 사진, 영상 불러오기 )

폴더에 있는 사진을 불러오고, 웹캠을 통해 실시간으로 영상 받아오기

# read.py import cv2 as cv # 사진 읽기 img = cv.imread('photos/cat.png') cv.imshow('Cat',img) cv.waitKey(0) # 동영상 불러오기(웹캠) capture = cv.VideoCapture(0) # Frame을 만들고 무한 반복문을 돌려서 웹캠을 통해 영상 프레임을 실시간으로 받아온다 while True: isTrue, frame = capture.read() cv.imshow('Video', frame) # d 누르면 영상 종료 if cv.waitKey(20) & 0xFF==ord('d'): break capture.release() cv.destroyAllWindows() cv.waitKey(0)

* 사진 읽을 때는 중요한 점이 사진의 height와 width가 너무 크면 잘리기 때문에 resize 과정이 필요하다.

2. rescale.py

Frmae resizing과 Frame Resolution 변경하는 코드

import cv2 as cv # Frame 크기 변경(resizing) # Default scale은 75% (0.75 = 75%), '.2'는 2%와 같다. # rescaleFrame 함수는 image, Live video, video 모두에서 사용가능 def rescaleFrame(frame, scale = 0.75): width = int(frame.shape[1] * scale) height = int(frame.shape[0] * scale) dimensions = (width, height) # tuple형식으로 저장 return cv.resize(frame, dimensions, interpolation=cv.INTER_AREA) # 변환 전 이미지 프레임 img = cv.imread('Photos/cat.png') cv.imshow('Cat', img) # 변환 후 이미지 프레임 resized_image = rescaleFrame(img) cv.imshow('Image', resized_image) # 비디오 resolution 변경 # 실시간 영상에서만 동작하고 image와 그냥 video에서는 안된다고 한다. # 밝기도 변경가능 def changeRes(width, height): capture.set(3, width) capture.set(4, height) capture = cv.VideoCapture(0) while True: isTrue, frame = capture.read() # Frame 크기 변경 # scale 변수 추가해주면 rescaleFrame에서 변경된 frame에서 추가로 변경된다. frame_resized = rescaleFrame(frame) # frame_resized = rescaleFrame(frame, scale=.2) cv.imshow('Video', frame) cv.imshow('Video_resiezed', frame_resized) if cv.waitKey(20) & 0xFF == ord('d'): break capture.release() cv.destoryAllWindows()

3. 도형 그리기

draw.py

4. OpenCV에서 많이 쓰이는 Basic function

import cv2 as cv img = cv.imread('Photos/city.png') cv.imshow('city', img) # convert RGB image to gray image gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) cv.imshow('Gray', gray) # Blur # 1. GaussianBlur blur = cv.GaussianBlur(img, (7,7), cv.BORDER_DEFAULT) cv.imshow('Blur',blur) # Edge Cascade canny = cv.Canny(img, 125, 175) canny = cv.Canny(blur, 125, 175) cv.imshow('Canny Edges', canny) # Dilating the image # apply canny image dilated = cv.dilate(canny, (3,3), iterations=2) cv.imshow('Dilated', dilated) # Eroding # apply dilated image eroded = cv.erode(dilated, (3,3), iterations=2) cv.imshow('Eroded', eroded) # image Resize resized = cv.resize(img, (300, 400)) cv.imshow('Resided', resized) # Cropping cropped = img[100:300, 200:300] cv.imshow('cropped', cropped) cv.waitKey(0)

(1) 이미지 회색으로 converting

(2) Blur - 이미지 흐리게 하기

(3) Canny, Dilated

Dilate는 Canny화 된 이미지를 사용한다.

Canny에 비해 Dilated를 시키면 선이 더 굵어진다.

iterations의 수를 더 올리면 더 굵어진다.

crop - 이미지 슬라이싱

이미지 shifting, 회전, Flipping

Transformations : 

Toplist

최신 우편물

태그