OpenCV는 영상 데이터를 numpy.ndarray
로 표현
import cv2
img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)
numpy.ndarray
- ndim: 차원 수. len(img.shape)과 같음.
- shape: 각 차원의 크기. (h, w)[그레이스케일] 또는 (h, w, 3)[컬러]
- size: 전체 원소 개수
- dtype: 원소의 데이터 타입. 영상 데이터는 uint8.
OpenCV 영상 데이터 자료형과 Numpy 자료형
- 그레이스케일 영상: cv2.CV_8UC1 → numpy.uint8, shape = (h, w)
- 컬러 영상: cv2.CV_8UC3 → numpy.uint8, shape = (h, w, 3)
영상의 속성 참조 예제
img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)
print('type(img1):', type(img1))
print('img1.shape:', img1.shape)
print('img2.shape:', img2.shape)
print('img2.dtype:', img2.dtype)
h,w = img2.shape[:2]
print('img2.size: {} x {}'.format(w, h))
if len(img1.shape) == 2:
print('img1 is a grayscale image')
elif len(img1.shape) == 3:
print('img1 is a truecolor image')
영상의 픽셀 값 참조 예제
img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)
for y in range(h):
for x in range(w):
img1[x, y] = 255
img2[x, y] = [0, 0, 255]