본문 바로가기

AI/openCV

OpenCV 영상 데이터와 영상 처리

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