avatar
비루한 대학생

#1. OpenCV-Python

수업 정리
PythonOpenCV영상처리
3 months ago
·
4 min read

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으로 채움


- 컬렉션 아티클






2!=2