👀 픽셀(pixel)
바둑판 모양의 격자에 나열되어 있는 형태, 2차원 행렬
그레이스케일 영상
트루컬러 영상
가로크기 * 세로크기 * 3
= 28 * 28 * 3
= 2352 bytespip install opencv-python
import cv2
print('현재 opencv 버전:', cv2.__version__)
matplotlib 설치
pip install matplotlib
영상 출력
3-1. 그레이스케일 영상 출력
- plt.imshow()
함수에서 컬러맵(cmap)을 gray로 설정
- opencv에서 영상을 부를 때 cv2.IMREAD_GRAYSCALE을 사용
3-2. 컬러 영상 출력하기
- 컬러 영상의 색상정보는 RGB 순서
- cv2.imread()
메소드로 불러온 영상의 색상 정보는 BGR 순서이기 때문에 matplotlib에서 출력하려면 RGB 순서로 cv2.cvtColor()
메소드를 사용하여 변경해야 함
import cv2
import matplotlib.pyplot as plt
# img_gray = cv2.imread('cat.bmp') 컬러
# img_gray = cv2.imread('cat.bmp', cv2.IMREAD_COLOR) 컬러
img_gray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
# plt.axis('off')
# plt.imshow(img_gray, cmap='gray')
# plt.show()
img_rgb = cv2.imread('cat.bmp') # (Blue, Green, Red)
img_rgb = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2RGB) # BGR -> RGB
# plt.axis('off')
# plt.imshow(img_rgb)
# plt.show()
# subplot 만들기
# 컬러 + 흑백
plt.subplot(121)
plt.axis('off')
plt.imshow(img_rgb)
plt.subplot(122)
plt.axis('off')
plt.imshow(img_gray, cmap='gray')
plt.show()
영상의 속성과 픽셀값
OpenCV는 영상 데이터를 numpy.ndarray로 표현
img = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
numpy.ndarray
img.shape: 각 차원의 크기. 그레이스케일은 (h, w)이며 컬러영상은 (h, w, 3)
img.size: 전체 원소의 개수
img.dtype: 원소의 데이터 타입. 영상 데이터 uint8
지정한 크기로 영상 생성하기
numpy.empty(): 임의의 값으로 초기화된 배열을 생성
numpy.zeros(): 0으로 초기화된 배열을 생성
numpy.ones(): 1로 초기화된 배열을 생성
numpy.full(): 원하는 값으로 초기화된 배열을 생성
직선 그리기
cv2.line(영상, 직선의 시작점과 끝점, 선색상, 선두께, 선타입)
사각형 그리기
cv2.rectangle(영상, 사각형 꼭지점 좌표, 선색상, 선두께)
원 그리기
cv2.circle(영상, 원의 중앙좌표, 반지름, 선색상, 선두께)
문자열 출력하기
cv2.putText(영상, 문자열, 영상에서 문자열을 출력할 위치의 좌표, 글꼴, 폰트크기)
동영상 처리하기
cv2.VideoCapture 클래스
카메라 영상
cv2.VideoCapure(index)
index: 시스템의 기본 카메라를 open하려면 0 또는 숫자를 사용
cv2.VideoCapure.isOpened()
True: 성공
False: 실패
cv2.CAP_PROP_FRAME_WIDTH: 카메라로 읽어들인 영상의 가로 사이즈
cv2.CAP_PROP_FRAME_HEIGHT: 카메라로 읽어들인 영상의 세로 사이즈
cv2.VideoCapure.read()
영상의 프레임과 프레임이 제대로 리턴되었는지 여부
ret: 영상이 정상적으로 리턴되었는지 여부(True, False)
frame: 영상