Python OpenCV 강좌 : 제 34강 - 픽셀 접근

Python OpenCV Pixel Access

Python OpenCV 강좌 : 제 34강 - 픽셀 접근
[ Python-OpenCV ] - 윤대희

픽셀 접근(Pixel Access)


1 픽셀 접근은 이미지 배열에서 특정 좌표에 대한 값을 받아오거나, 변경할 때 사용합니다.

Numpy 배열의 요소 접근 방식과 동일하며, 직접 값을 변경하거나 할당할 수 있습니다.

OpenCV의 Mat 클래스는 Numpy 배열을 사용하므로 문자열, 리스트, 튜플 등에 사용되는 슬라이싱을 동일하게 사용할 수 있습니다.



Main Code


import cv2
import numpy as np

gray = np.linspace(0, 255, num=90000, endpoint=True, retstep=False, dtype=np.uint8).reshape(300, 300, 1)
color = np.zeros((300, 300, 3), np.uint8)
color[0:150, :, 0] = gray[0:150, :, 0]
color[:, 150:300, 2] = gray[:, 150:300, 0]

x, y, c = 200, 100, 0
access_gray = gray[y, x, c]
access_color_blue = color[y, x, c]
access_color = color[y, x]

print(access_gray)
print(access_color_blue)
print(access_color)

cv2.imshow("gray", gray)
cv2.imshow("color", color)
cv2.waitKey(0)
cv2.destroyAllWindows()



Detailed Code


gray = np.linspace(0, 255, num=90000, endpoint=True, retstep=False, dtype=np.uint8).reshape(300, 300, 1)

회색 그라데이션 이미지인 gray를 선언합니다.

그라데이션 이미지는 등간격(numpy.linspace)을 활용해 구현할 수 있습니다.

등간격 배열을 생성하면, 이미지 배열이 아니므로, 차원 변경(numpy.reshape) 함수를 활용해 단일 채널 이미지로 변경합니다.


  • Tip : 300×300×1 크기이 이미지를 생성할 예정이므로, num은 90000을 갖습니다.


등간격 사용하기 : Python Numpy 4강 바로가기



color = np.zeros((300, 300, 3), np.uint8)
color[0:150, :, 0] = gray[0:150, :, 0]
color[:, 150:300, 2] = gray[:, 150:300, 0]

색상 그라데이션 이미지인 color를 선언합니다.

Blue 채널0 ~ 150 행gray의 값을 할당하고, Red 채널150 ~ 300 열gray 값을 할당합니다.

배열의 접근 방식은 배열[행 시작:행 끝, 열 시작: 열 끝, 차원 시작:차원 끝]의 구조를 갖습니다.

슬라이싱 방법과 동일하게 접근하며 행, 열, 차원의 순서입니다.


슬라이싱 사용하기 : Python Numpy 5강 바로가기



x, y, c = 200, 100, 0
access_gray = gray[y, x, c]
access_color_blue = color[y, x, c]
access_color = color[y, x]

print(access_gray)
print(access_color_blue)
print(access_color)

결과 :
85
85
[85 0 85]


요소 접근시 배열 접근은 행, 열, 차원 구조이므로, y, x, 차원의 형태로 접근해야 합니다.

그러므로, y, x, c의 형태로 이미지 요소에 접근합니다.

만약, 차원을 포함하지 않는 경우 세 차원 모두 반환하므로, Numpy 배열 형식의 값을 반환합니다.

요소 접근에도 콜론(:)을 통해 범위 형태로 값을 접근할 수 있습니다.

또한, 콜론(:)을 한번 더 포함한다면 간격(step)으로도 값을 뛰엄뛰엄 받아올 수 있습니다.



Result


2


도움이 되셨다면 광고 클릭 부탁드립니다.


Book Image

책이 출간되었습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C# OpenCvSharp4
  • Python OpenCV4
  • Using Tesseract
  • Using TensorFlow
  • Using Regular Expression
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]


    ⤧  Previous post Python OpenCV 강좌 : 제 33강 - 히스토그램 ⤧  Next post Python OpenCV 강좌 : 제 35강 - 트랙 바
    Python-OpenCV Category