이미지 기본 연산

OpenCVBeginner
지금 연습하기

소개

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

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 74%입니다.학습자들로부터 95%의 긍정적인 리뷰율을 받았습니다.

픽셀 값 접근 및 수정

이 랩을 시작하기 전에, 챌린저들은 터미널에서 /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 을 사용하여 이미지에 대한 몇 가지 기본 작업을 배웠습니다. 이는 컴퓨터 비전 및 이미지 처리 응용 프로그램에서 이미지를 사용할 때 이해해야 할 중요한 개념입니다. 이러한 기본 작업을 숙달하면 더 발전된 이미지 처리 알고리즘을 개발하는 데 도움이 될 것입니다.