이미지 기본 연산

OpenCVBeginner
지금 연습하기

소개

OpenCV-Python 튜토리얼에 오신 것을 환영합니다! 이 튜토리얼에서는 Python 에서 OpenCV 라이브러리를 사용하여 이미지에 대한 몇 가지 기본적인 작업을 다룹니다.

픽셀 값 접근 및 수정

이 랩을 시작하기 전에, 챌린저들은 터미널에서 /home/labex/project 경로에서 Python Shell 을 열어야 합니다.

cd /home/labex/project

python3

먼저, 이미지를 로드하고 OpenCV 를 사용하여 표시하는 것으로 시작해 보겠습니다.

import cv2

## Load an image
image = cv2.imread('image.jpg')

## Display the image
cv2.imwrite('Original Image.jpg', image)

픽셀 값에 접근하려면, 다음과 같이 해당 좌표 (x, y) 를 제공하면 됩니다.

pixel_value = image[y, x]

픽셀 값은 색상 채널 (B, G, R) 을 포함하는 배열입니다. 픽셀 값을 수정하려면, 해당 좌표에 새 값을 할당하면 됩니다.

다음은 [0:9, 0:9] 픽셀을 빨간색으로 설정하는 예시입니다.

for x in range(10):
    for y in range(10):
        image[x, y] = [0, 0, 255]  ## Set the pixel to red


cv2.imwrite('Modified Image.jpg', image)

원본 이미지는 다음과 같습니다.

Original image before modification

[0:9,0:9] 범위에서 픽셀 값을 수정한 후의 이미지:

Modified pixel values image

사용자는 아래 코드를 실행하여 결과의 정확성을 확인할 수 있습니다.

이미지 속성 접근

이미지 속성에는 행, 열, 채널의 수, 이미지 데이터 유형 및 총 픽셀 수가 포함됩니다.

이미지의 모양 (rows, columns, 및 channels) 에 접근하려면, shape 속성을 사용합니다.

height, width, channels = image.shape
print(height, width, channels)

## output
## 360 640 3

총 픽셀 수에 접근하려면, size 속성을 사용합니다.

total_pixels = image.size
print(total_pixels)

## output
## 691200

이미지 데이터 유형에 접근하려면, dtype 속성을 사용합니다.

image_dtype = image.dtype
print(image_dtype)

## output
## uint8

관심 영역 (ROI) 설정

관심 영역 (ROI) 은 원본 이미지에서 추출할 수 있는 하위 이미지입니다. ROI 를 설정하려면 시작 및 종료 좌표를 제공하면 됩니다.

roi = image[start_y:end_y, start_x:end_x]

예를 들어, 왼쪽 상단 모서리에서 100x100 픽셀의 ROI 를 추출하려면 다음과 같이 할 수 있습니다.

roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)

생성된 이미지 ROI.jpg는 다음과 같습니다.

ROI example image

이미지 분할 및 병합

이미지를 색상 채널 (B, G, R) 로 분할하려면 cv2.split() 함수를 사용합니다.

b, g, r = cv2.split(image)

이제 cv2.imwrite()를 사용하여 개별 채널을 표시할 수 있습니다. 채널을 다시 단일 이미지로 병합하려면 cv2.merge() 함수를 사용합니다.

merged_image = cv2.merge((b, g, r))

예를 들어, 빨간색과 파란색 채널을 바꾸려면 다음과 같이 할 수 있습니다.

swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)

생성된 이미지 Swapped Channels Image.jpg는 다음과 같습니다.

Swapped red and blue channels

요약

이것으로 끝입니다! OpenCV-Python 을 사용하여 이미지에 대한 몇 가지 기본 작업을 배웠습니다. 이는 컴퓨터 비전 및 이미지 처리 응용 프로그램에서 이미지를 사용할 때 이해해야 할 중요한 개념입니다. 이러한 기본 작업을 숙달하면 더 발전된 이미지 처리 알고리즘을 개발하는 데 도움이 될 것입니다.