PythonOpenCV영상처리
1. OpenCV란?
Open Source Computer Vision
영상 처리에 사용할 수 있는 오픈 라이브러리이다.
OpenCV의 영상처리 및 컴퓨터 비전의 라이브러리를 사용하여 응용 프로그램을 쉽고 빠르게 만들 수 있다.
2. NumPy란?
과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 유용한 함수를 제공해주는 라이브러리
2.1. ndarray의 속성
ndarray란 Numpy의 n차원 객체로서, 하나의 데이터타입만 넣을 수 있다. (= C의 Array)
이미지 배열은 numpy배열이다.
import cv2
img = cv2.imread("D:\citt.jpg")
print(type(img))
>> <class 'numpy.ndarray'>
ndim : 차원의 수 (기본적으로는 R, G, B, 즉 3이다.)
shape : 각 차원의 크기를 튜플로 나타냄
size : ndarray에 있는 요소의 총 개수
dtype : 요소의 데이터타입
itemsize : 각 요소의 바이트 크기
2.3. ndarray 객체 만들기
2.3.1. 값으로 만들기
import numpy as np
np.array(list [, dtype])
dtype : uint8, uint16, uint64(부호 없는 정수) / float16, float32, float64(부동소수점을 갖는 실수)
보통은 8비트가 많이 쓰이는데, 그 이유는 픽셀의 밝기값이 256단계, 즉 8비트 데이터를 쓰기 때문이다.
import cv2
import numpy as np
ary = np.array([1, 2, 3, 4])
print(ary)
print(ary.dtype)
>>[1 2 3 4]
>> int64 (dtype값을 지정하지 않았으므로 array([])안에 있는 type으로 지정됨)
ary = np.array([1, 2, 3.14, 4])
print(ary)
print(ary.dtype)
>>[1. 2. 3.14 4. ]
>> float64
(ndarray는 한 가지 타입만 들어가기 때문에 타입이 섞여있으면 더 포괄적인 자료형으로 지정된다.)
ary = np.array([1, 2, 3, 4])
print(ary.shape)
>> 4
ary = np.array([[1, 2], [3, 4]])
print(ary)
print(ary.shape)
>> [[1 2]
[3 4]]
>> (2, 2)
ary = np.array([[1],[2],[3],[4]])
print(ary)
print(ary.shape)
>> [[1]
[2]
[3]
[4]]
>> (4, 1)
2.3.2. 크기와 초기값으로 만들기
np.empty : 쓰레기값으로 채움
np.zeros : 0을 채움
np.ones : 1로 채움
np.full(shape, fill_value [, dtype)) : fill_value값으로 채움
a = np.empty((2,3))
print(a)
print(a.dtype)
>> [[ 4.64583300e-308 4.66664552e-308 -2.57703408e+010]
[-4.70231646e-064 2.26262303e-319 0.00000000e+000]]
>> float64 (empty는 초기화가 아님에 유의하기)
초기화가 필요할 때는 a.fill(0)처럼 fill()함수를 사용하기
dtype을 지정해줄 때
c = np.zeros((2,3), dtype=np.unit8)
컬러 이미지는 하나의 픽셀이 RGB값을 가지므로 3차원 배열이 필요하다.
2.3.3. 기존 배열과 같은 크기의 배열 만들기
np.empty_like(array [, dtype]) : 크기만 같고 안에는 쓰레기값이 들어간다
np.zeros_like(img) : 0으로 채움