본문 바로가기
OpenCV

[OpenCV] 영상데이터 표현, 생성, 복사

by ram_ 2023. 2. 21.

1. 영상 데이터 numpy.ndarray 표현

img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)

여기서 img1과 img2는 numpy.ndarray로 표현되어 있다. 

  •  ndim : 차원의 수, len(img.shape)과 같다.
  • shape : 각 차원의 크기. 그레이스케일 영상의 (h, w) 또는 컬러영상의 (h, w, 3). 컬러영상의 3은, RGB 3개의 색을 의미한다.
  • size : 전체 원소 갯수
  • dtype : 원소의 데이터 타입. 영상 데이터는 대부분의 경우 uint8이다.

       예를 들어, 컬러 영상이 cv2.CV_8UC3으로 표기되어 있다면, numpy.uint8, shape =(h, w, 3)으로 인지하면 된다.

 


2. 영상의 생성

numpy.empty(shape, dtype=float, ...) -> str
numpy.zeros(shape, dtype=float, ...) -> arr
numpy.ones(shape, dtype=None, ...) -> arr
numpy.full(shape, fill_value, dtype=None, ...) -> arr
  • arr : 생성된 영상이다.(np.ndarray)

! 참고사항

  - numpy.empty()함수는 임의의 값으로 초기화된 배열을 생성한다.

  - numpy.zeros()함수는 0으로 초기화된 배열을 생성한다.

  - numpy.ones()함수는 1로 초기화된 배열을 생성한다.

  - numpy.full()함수는 fill_value로 초기화된 배열을 생성한다.

 

 


3. 영상의 복사

 

img1[:, :, :] =255로 img1의 모든 값을 다 255로 setting해주면서, 흰색이 되었고,

img2는 img1의 pixel데이터를 공유받기 때문에, 똑같이 흰색배경이 나타난 것이고, 

img3는 완전히 새로 복사한 것이기 때문에, img1과 별개의 메모리 공간을 사용하게 되며, 온전한 img1의 사진이 나타나게 된다.

 

'OpenCV' 카테고리의 다른 글

[OpenCV] 마스크 연산 / ROI  (0) 2023.03.02
[OpenCV] Img crop / 밝기 조절  (0) 2023.03.02
[OpenCV] Matplotlib을 이용한 영상 출력  (0) 2023.02.21
[OpenCV] 주요 함수 사용법  (0) 2023.02.20
[OpenCV] 기초 test  (1) 2023.02.20