Computer Vision
컴퓨터의 시각적인 능력(visual capability)로 할 수 있는 응용 및 연구 분야
영상 처리(image processing) 용 대표적인 Tool
1. OpenCV (Open Source Computer Vision)
- 원래 Intel사에서 개발했지만, 현재는 Open Source BSD license
- OpenCV의 방대하고 다양한 기능은 일반 사용자가 그러한 기능을 이해하는 것을 어렵게 하는 단점 존재
2. SimpleCV (Simple Computer Vision)
- OpenCV에 비해 부분적으로 기능상 제약이 있지만, 사용하기가 훨씬 쉬운 라이브러리
- 상대적으로 설치가 단순
OpenCV 3를 이용한 USB 카메라 사용 기본
NumPy 패키지
Python에서 과학적인 계산을 하기 위해 사용하는 주된 패키지 임
선형 대수를 위한 matrix library임
주로 일반적인 데이터의 다차원 컨테이너로 사용 가능
배열
x=np.array([1,2,3])
array([1,2,3])
x=np.arange(10)
array([0,1,2,3,4,5,6,7,8,9])
x=np.linspace(0,15,4) ==> 균등 간격의 점으로 배열 생성
array([0,5,10,15])
x.transpose() => 행이랑 열을 서로 바꿈(전치)
np.linalg.inv(x) => 역행렬
c=np.random.rand(3,3) => 난수 배열 생성
np.dot(a,b) => 행렬의 곱
matplotlib 패키지
image를 표시하기 위해 matplotlib 사용 가능
Python용 2D plotting library임
plt.title('____') => 그림 제목
plt.xticks([])
plt.yticks([]) ==> x,y 축을 정하는 건데 이렇게 공백으로 해놓으면 좌표가 안보임
OpenCV3.x 기본 실습
cv2.imread(filename,flag)
영상을 read하는 기능
flag(두번째 인자) => 기본 flag=1
• cv2.IMREAD_COLOR : color image로 image를 load 함 (flag=1) BGR형식!
• cv2.IMREAD_GRAYSCALE : gayscale mode로 image를 load 함 (flag=0)
• cv2.IMREAD_UNCHANGED : alpha 채널(투명도)이 포함된 image를 load함 (flag=-1)
반환 값은 NumPy 배열임
cv2.cvtColor(img,cv2.COLOR_BGR2RGB )
배열 위치 등 변경
cv2.imshow(window name,image)
image를 display하는 메소드
cv2.waitKey()
keyboard binding function 함수
인자는 milliseconds 단위의 시간 임
인자 값이 0이면, 키 누름을 무한히 기다리게 됨
cv2.destroyAllWindows()
생성된 모든 window 를 닫음
cv2.destroyWindow(window name)
특정한 이름의 window를 닫을 때 사용
cv2.namedWindow()
먼저 window만 만들고, 나중에 해당 window에 image를 load하고자 할 때 사용
cv2.imwrite(filename, image)
image를 파일로 저장하기 위해 사용
cv2.imread() => plt.imread() 의 문제점
cv2.imread()
image를 읽고, BGR(blue, Green, Red) pixel의 NumPy array로 저장
plt.imread()
image를 RGB(Red, Green, Blue) format 형식으로 입력을 해석해 표시함
OpenCV와 matplotlib가 image를 저장하는 형식이 다름
img_new = cv2.cvtColor( img, cv2.COLOR_BGR2RGB)을 하면
plt.imshow(img_new) 가능
Camera에서 video를 capture하는 과정
video를 일련의 개별적인 frames(image)으로 처리함
cv2.imshow(‘cap’, frame)
OpenCV 에서는 video를 일련의 frame으로 간주하므로, 연속적으로 다음 frame을 처리하려면 loop 처리가 필요
cv2.VideoCapture()
video capture 객체 생성 (1개인 경우 0인 device index)
cam.read()
ret, frame = cam.read()
부울값 ret (캡처 성공 여부)과 image를 나타내는 frame 반환
cam.release() 함수
device 사용을 해제함
Zbar를 이용한 Barcode와 QRcode scanner 구현
이게 나온다고?
에반데
'수업정리 > 임베디드 시스템' 카테고리의 다른 글
ChatBot 이해 (0) | 2020.12.09 |
---|---|
인공지능과 머신 러닝(machine learning) (0) | 2020.12.09 |
LAMP (0) | 2020.12.09 |
라즈베리파이 GPIO 디지털 입출력(Python) (0) | 2020.12.09 |
단위 표시 (0) | 2020.12.09 |