[Python 데이터 분석과 이미지 처리] OpenCV 이미지 연산

뽕칠이·2023년 12월 22일
0

OpenCV 이미지 연산

픽셀 단위로 색상 변경

import cv2
import matplotlib.pyplot as plt
import time
image = cv2.imread('cat.jpg')

# 이미지 픽셀 수 출력
print(image.shape)
# 이미지 크기 출력
print(image.size)

# 이미지의 특정 픽셀을 가리킴
px = image[100, 100]
# BGR 순서로 출력, 흑백일 때는 BGR을 구분하지 않음
print(px)
# R만 출력
print(px[2])


# 이미지 연산 시작 시간
start_time = time.time()

# (0, 0) ~ (99, 99)까지의 픽셀을 [255, 255, 255]로 변경
for i in range(100):
    for j in range(100):
        image[i, j] = [255, 255, 255]
# 마무리 시간 - 시작 시간
print("---%s seconds ---" %(time.time() - start_time))

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

start_time = time.time()
# (0, 0) ~ (99, 99)까지의 픽셀을 [0, 0, 0]으로 변경
image[0:100, 0:100] = [0, 0, 0]
print("---%s seconds ---" % (time.time() - start_time))

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

관심 있는 영역 추출

import cv2
import matplotlib.pyplot as plt
image = cv2.imread('cat.jpg')

# ROI(Region Of Interest: 관심 있는 영역)
# (200, 50) ~ (349, 199)까지를 roi로 지정
roi = image[200:350, 50:200]

#ROI 단위로 이미지 복사
# (0, 0) ~ (149, 149)까지의 영역을 roi로 변경
image[0:150, 0:150] = roi

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

# 특정 색상만 제거
# 모든 영역의 Red를 제거(0: Blue, 1: Green, 2: Red)
image[:, :, 2] = 0

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()

0개의 댓글