OpenCV(Open Source Computer Vision Library)는 컴퓨터 비전 및 이미지 처리 작업을 수행하는 데 사용되는 강력한 오픈 소스 라이브러리입니다. 이 블로그 포스팅에서는 OpenCV의 기초적인 사용법과 몇 가지 유용한 기능을 다룰 것입니다.
우선, 이미지 파일을 읽어와서 데이터의 타입을 확인하는 방법을 알아봅시다.
import cv2
# 이미지 파일 읽기
img = cv2.imread('data/messi5.jpg')
# 데이터 shape 확인
print(img.shape)
# 데이터 크기 확인
print(img.size)
# 데이터 타입 확인
print(img.dtype)
이 코드는 'messi5.jpg' 이미지를 읽어와서 해당 이미지의 shape, size, dtype을 출력합니다.
이미지를 채널별로 나누고 다시 합치는 방법을 알아봅시다.
import cv2
# 이미지 파일 읽기
img = cv2.imread('data/messi5.jpg')
# 이미지 채널 나누기
b, g, r = cv2.split(img)
# 나눈 이미지 채널 보여주기
cv2.imshow('Blue Channel', b)
cv2.imshow('Green Channel', g)
cv2.imshow('Red Channel', r)
# 이미지 채널 합치기
img_merged = cv2.merge((b, g, r))
# 합친 이미지 보여주기
cv2.imshow('Merged Image', img_merged)
cv2.waitKey(0)
cv2.destroyAllWindows()
이 코드는 이미지를 BGR 채널로 나누고, 다시 합치는 방법을 보여줍니다.
이미지를 리사이즈하고 합치는 방법을 알아봅시다.
import cv2
# 이미지 파일 읽기
img = cv2.imread('data/messi5.jpg')
img2 = cv2.imread('data/opencv-logo.png')
# 부분 이미지 추출
ball = img[280:340, 330:390]
# 부분 이미지 합치기
img[273:333, 100:160] = ball
# 이미지 리사이즈
img = cv2.resize(img, (512, 512))
img2 = cv2.resize(img2, (512, 512))
# 이미지 합치기
dst = cv2.addWeighted(img, 0.9, img2, 0.1, 0)
# 합친 이미지 보여주기
cv2.imshow('Merged Image', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
이 코드는 이미지를 리사이즈하고 두 이미지를 가중치를 적용하여 합치는 방법을 보여줍니다.
비트 연산을 사용하여 이미지를 처리하는 방법을 알아봅시다.
import cv2
import numpy as np
# 두 개의 검정 이미지 생성
img1 = np.zeros((250, 500, 3), np.uint8)
img1 = cv2.rectangle(img1, (200, 0), (300, 100), (255, 255, 255), -1)
img2 = np.zeros((250, 500, 3), np.uint8)
img2 = cv2.rectangle(img2, (250, 0), (500, 250), (255, 255, 255), -1)
# 비트 연산 수행
bitAnd = cv2.bitwise_and(img2, img1)
bitOr = cv2.bitwise_or(img2, img1)
bitXor = cv2.bitwise_xor(img1, img2)
bitNot1 = cv2.bitwise_not(img1)
bitNot2 = cv2.bitwise_not(img2)
# 결과 이미지 보여주기
cv2.imshow("Image 1", img1)
cv2.imshow("Image 2", img2)
cv2.imshow('Bitwise AND', bitAnd)
cv2.imshow('Bitwise OR', bitOr)
cv2.imshow('Bitwise XOR', bitXor)
cv2.imshow('Bitwise NOT 1', bitNot1)
cv2.imshow('Bitwise NOT 2', bitNot2)
cv2.waitKey(0)
cv2.destroyAllWindows()
이 코드는 두 개의 이미지에 대해 AND, OR, XOR, NOT 연산을 수행하여 결과를 보여줍니다.
트랙바를 사용하여 이미지를 동적으로 변경하는 방법을 알아봅시다.
import numpy as np
import cv2 as cv
def nothing(x):
print(x)
# 빈 화면 생성
img = np.zeros((300, 512, 3), np.uint8)
cv.namedWindow('image')
# 트랙바 생성
cv.createTrackbar('B', 'image', 0, 255, nothing)
cv.createTrackbar('G', 'image', 0, 255, nothing)
cv.createTrackbar('R', 'image', 0, 255, nothing)
switch = '0 : OFF\n 1 : ON'
cv.createTrackbar(switch, 'image', 0, 1, nothing)
while True:
cv.imshow('image', img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
# 트랙바 값 가져오기
b = cv.getTrackbarPos('B', 'image')
g = cv.getTrackbarPos('G',
Python OpenCV의 기초적인 사용법과 다양한 기능을 다뤘습니다. OpenCV는 컴퓨터 비전 및 이미지 처리 작업에 매우 유용한 도구이므로, 여기서 다룬 내용을 기반으로 더 복잡하고 흥미로운 프로젝트를 진행할 수 있을 것입니다!!