소개
OpenCV-Python 튜토리얼에 오신 것을 환영합니다! 이 튜토리얼에서는 Python 에서 OpenCV 라이브러리를 사용하여 이미지에 대한 몇 가지 기본적인 작업을 다룹니다.
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)
원본 이미지는 다음과 같습니다.

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

사용자는 아래 코드를 실행하여 결과의 정확성을 확인할 수 있습니다.
이미지 속성에는 행, 열, 채널의 수, 이미지 데이터 유형 및 총 픽셀 수가 포함됩니다.
이미지의 모양 (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 = image[start_y:end_y, start_x:end_x]
예를 들어, 왼쪽 상단 모서리에서 100x100 픽셀의 ROI 를 추출하려면 다음과 같이 할 수 있습니다.
roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)
생성된 이미지 ROI.jpg는 다음과 같습니다.

이미지를 색상 채널 (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는 다음과 같습니다.

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