ecsimsw
PIL / OpenCV / 이미지 처리 본문
PIL / OpenCV / 이미지 처리
- 이미지 처리를 위한 라이브러리를 간단하게만 사용해보았다.
- 영상 안의 사람이나 사물을 인식하고 이를 레이블링 하는 등의 프로젝트를 만들어보면서 공부할 생각이다.
PIL
- 파이썬에서 이미지를 처리하기 위한 대표적인 라이브러리.
Example
- 이미지를 정의한 사이즈의 0,1 이차원 배열로 변환한다.
- 이미지를 회색조로, 크기를 정의한 사이즈로 변경하고, 전체 픽셀 데이터를 2차원으로 표현한 후, 이 전체 픽셀의 평균값을 계산한다. 모든 각 픽셀을 평균값과 비교하여 그보다 크면 1, 작으면 0로 하여 다시 2차원 배열에 저장한다.
from PIL import Image
import numpy as np
import matplotlib.pyplot as pp
root = "/imgFolder/"
fileName ="XX.PNG"
file= direct+fileName
size = 64
def getIMGdif(file,size):
img = Image.open(file)
pp.imshow(img) #img.show()
img = img.convert('L')
img = img.resize((size,size),Image.ANTIALIAS)
pixel_data = img.getdata()
data= np.array(pixel_data).reshape(size,size)
avr = data.mean()
dif = 1*(data>avr) #-1
return dif
def saveAsTxt(dif_):
#-2
#with open(root+str(fileName)+".txt",mode='w') as f:
# for i in dif_:
# f.write(str(i.tolist()))
# f.write('\n')
np.savetxt(root+str(fileName)+".txt",dif_, fmt='%d', delimiter=' ')
print("Saved as ",fileName)
def img2bin(file,size):
saveAsTxt(getIMGdif(file,size))
img2bin(file,size)
1. numpy array는 연산자로, 각 행렬마다의 계산을 한번에 처리하고 이를 배열로 반환이 가능하다.
2. numpy.savetxt로 한번에 배열을 저장 가능하다.
result
- 추출한 바이너리 두 배열을 데이터로 하여 두 이미지를 비교하면, 이미지의 동일 유사 여부 또는 이미지의 한 부분이 어디에 위치하는지 등을 구할 수 있겠다.
OpenCV
- 실시간 이미지 프로세싱에 중점을 둔 라이브러리
- Haar_cascade : 머신러닝으로 특정 개체를 검출하는 알고리즘
Example
- 이미지를 회색조로 변경하고, haar cascade를 이용해서 전면 얼굴을 인식한다.
import cv2
haar_cascade = "haarcascade_frontalface_default.xml"
image = cv2.imread('data_img.jpg')
image_gs = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(haar_cascade)
face_list = cascade.detectMultiScale(image_gs, scaleFactor=1.1, minNeighbors=1, minSize=(150, 150))
if len(face_list) > 0:
print("number of face : ", len(face_list))
color = (0, 0, 255)
for face in face_list:
x, y, w, h = face
cv2.rectangle(image, (x, y), (x+w, y+h), color, thickness=7)
cv2.imwrite("data_detected.jpg", image)
else:
print("no face")
- imread의 return 값이 none type 일 경우 경로에 한글이 들어가진 않았는지 확인
result
'Machine Learning' 카테고리의 다른 글
선형 회귀 / Linear Regression / MSE / cost function (0) | 2020.02.28 |
---|---|
머신러닝/ 지도, 비지도, 강화 / 혼동 행렬 / 과적합, 과소적합 (0) | 2020.02.28 |
Keras (0) | 2020.02.02 |
딥러닝, 파이썬, Keras 공부에 참고한 자료 (0) | 2020.02.02 |
아나콘다 / 텐서플로우 설치 (2) | 2020.02.01 |