1. 비디오 출력
동영상 파일을 읽으려면 컴퓨터에 동영상 코덱을 읽을 수 있는 라이브러리가 설치되어야 함
import cv2
# 비디오 출력 클래스(cv2.VideoCapture)를 통해 동영상 파일 정보를 받아옴
capture = cv2.VideoCapture("Image/Star.mp4")
while cv2.waitKey(33) < 0:
# CAP_PROP_POS_FRAMES: 현재 프레임수, CAP_PROP_FRAME_COUNT: 동영상의 총 프레임 수
# 위 두 파라미터가 같다는 것은 영상이 끝났다는 것을 의미
if capture.get(cv2.CAP_PROP_POS_FRAMES) == capture.get(cv2.CAP_PROP_FRAME_COUNT):
capture.set(cv2.CAP_PROP_POS_FRAMES, 0) # 현재 프레임 수를 0으로 초기화
ret, frame = capture.read()
cv2.imshow("VideoFrame", frame)
capture.release()
cv2.destroyAllWindows()
2. 크기 조절
이미지를 확대하는 경우에는 픽셀에 대한 보간법, 이미지를 축소하는 경우에는 픽셀에 대한 병합법 수행
1) 사용자가 요구하는 절대 크기로 변경
2) 비율에 맞게 상대 크기로 변경
import cv2
src = cv2.imread("Image/champagne.jpg", cv2.IMREAD_COLOR)
# 1) 절대크기로 변경 - dsize : 변경 크기 지정, interpolation : 보간법 지정
dst = cv2.resize(src, dsize=(640, 480), interpolation=cv2.INTER_AREA)
# 2) 상대크기로 변경 - dsize : 크기는 (0,0)으로 지정
dst2 = cv2.resize(src, dsize=(0, 0), fx=0.3, fy=0.7, interpolation=cv2.INTER_LINEAR)
cv2.imshow("src", src)
cv2.imshow("dst", dst)
cv2.imshow("dst2", dst2)
cv2.waitKey()
cv2.destroyAllWindows()
3. 색상 공간 변환 (Convert Color)
- 본래 색상 공간에서 다른 색상 공간으로 변환할 때 사용
- 색상 공간 변환 함수는 데이터 타입과 정밀도를 같게 유지하고 채널 변환
- 채널의 수는 감소, 데이터 값이 변경되거나 채널 순서가 변경될 수 있음
import cv2
src = cv2.imread("Image/crow.jpg", cv2.IMREAD_COLOR)
# cvtColor : 색상 공간 변환 함수
# 색상 변환 코드 : "원본 이미지 색상 공간2결과 이미지 색상 공간"
# BGR은 RGC 색상채널을 의미함 (Byte 역순이기 때문에 BGR로..)
dst = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
cv2.imshow("src", src)
cv2.imshow("dst", dst)
cv2.waitKey()
cv2.destroyAllWindows()
4. Edge 검출
- 가장자리는 픽셀의 밝기가 급격하게 변하는 부분으로 간주할 수 있음
- 가장자리를 찾기 위해 미분(Derivative)와 기울기(Gradient)연산을 수행하여, 이미지 상에서 픽셀의 밝기 변화율이 높은 경계선을 찾음
import cv2
src = cv2.imread("Image/wheat.jpg", cv2.IMREAD_COLOR)
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#입력 이미지에서 가장자리 검출
sobel = cv2.Sobel(gray, cv2.CV_8U, 1, 0, 3)
laplacian = cv2.Laplacian(gray, cv2.CV_8U, ksize=3)
canny = cv2.Canny(src, 100, 255)
cv2.imshow("sobel", sobel)
cv2.imshow("laplacian", laplacian)
cv2.imshow("canny", canny)
cv2.waitKey()
cv2.destroyAllWindows()