numpy.ndarray : OpenCV가 표현하는 영상데이터 형식 (uint8)
- 그레이 스케일 : h*w 2차원 표현
- 트루컬러 : h*w*3 3차원 표현
영상 픽셀 값 참조
- 슬라이싱 사용
img1 = cv2.imread('image.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('image.bmp', cv2.IMREAD_COLOR)
img[:] # 255
img[:,:] # 0,0,255 (B,G,R)
새 영상 생성
- 임의의 값으로 초기화된 배열 : numpy.empty(shape, dtype=float,...) # dtype : 영상의 데이터 타입(uint8)
- 0으로 초기화된 배열 : numpy.zeros(shape, dtype=float,...)
- 1로 초기화된 배열 : numpy.ones(shape, dtype=None,...)
- 지정 숫자로 초기화된 배열 : numpy.full(shape, num, dtype=None,...)
영상 참조 및 복사
img2 = img1 # 서로 데이터 공유
img3 = img1.copy() # 복사본을 새롭게 생성
부분 영상 추출
- 인덱싱과 슬라이싱 사용
img1 = cv2.imread('image.jpg')
img2 = img1[20:120, 30:150] # 참조되어 img1이 변하면 img2도 같이 변함
img3 = img1[20:120, 30:150].copy() # 변하지 x
마스크 연산과 ROI
마스크 연산
- OpenCV는 일부 함수에 대해 ROI 연산을 지원 -> 마스크 영상을 인자로 함께 전달해야 함
- 마스크 영상 : cv2.CV_8UC1 (그레이 스케일 영상)
- 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행
ROI
- Region of Interest, 관심영역
- 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역
cv2.copyTo(src, mask, dst=None)
- src : 입력 영상
- mask : 마스크 영상 (0이 아닌 픽셀에 대해서만 복사 연산 수행)
- dst : 출력 영상 (일부분 카피 시 필요)
- 각 인자의 크기와 타입이 같아야 함
* 패스트 캠퍼스 강의를 수강하고 정리하였습니다.
728x90
'AI > openCV' 카테고리의 다른 글
Matplotlib 라이브러리 (0) | 2024.05.21 |
---|---|
컴퓨터 비전이란? - openCV 설치와 사용 (0) | 2024.05.21 |