05.19 이미지 필터링 등

최고고·2022년 5월 19일
0

이미지 필터링 - blur

import cv2
import numpy as np
img = cv2.imread('ty.jpg')

kernel = np.ones((5,5), np.float32)/25
blur = cv2.filter2D(img, -1, kernel)

cv2.imshow('original', img)
cv2.imshow('blur', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

kernel 행렬


템플릿 매칭

  • 어떤 이미지에서 내가원하는 이미지를 찾는법

import cv2
import numpy as np
img = cv2.imread('game.png')

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

temp = cv2.imread('apple.png', cv2.IMREAD_GRAYSCALE)
h, w = temp.shape

res = cv2.matchTemplate(img_gray,temp,cv2.TM_CCOEFF_NORMED) #한픽셀씩찾도록함

loc = np.where(res>=0.7) #유사도 검색
for pt in zip(*loc[::-1]):
cv2.rectangle(img,pt,(pt[0] + w, pt[1]+h), (0,0,255),2)

cv2.imshow('img', img)
cv2.imshow('temp', temp)
cv2.waitKey(0)
cv2.destroyAllWindows()


얼굴, 눈 영역 검출

  • haar 알고리즘
  • Letina
  • InsightFace
  • FaceNet

import cv2
import matplotlib.pyplot as plt

face = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye = cv2.CascadeClassifier('haarcascade_eye.xml')

img = cv2.imread('fam.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

#얼굴 영역 검출 - 얼굴영역의 좌표값을 가져옴(좌상단의 x 좌표, 좌상단의 y좌표 , 가로크기, 세로크기)
#scaleFactor : 찾으려하는 얼굴의 크기
#minNeighbors : 얼굴 영역간의 거리

faces = face.detectMultiScale(gray, scaleFactor = 1.4, minNeighbors=5)

for(x,y,w,h) in faces :
cv2.rectangle(img,(x,y), (x+w,y+h), (0,0,255),2)
#얼굴영역 안에서만 눈 검출
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]

eyes = eye.detectMultiScale(roi_gray,1.05,2)
for (ex, ey, ew, eh) in eyes : 
    cv2.rectangle(roi_color,(ex,ey), (ex+ew, ey+eh),(255,0,0),2)

plt.imshow(img)

faces # 얼굴영역의 좌표값 (좌상단의 x 좌표, 좌상단의 y좌표 , 가로크기, 세로크기)

OCR

!pip install pytesseract
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('eng.png')
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
plt.imshow(img)

text = pytesseract.image_to_string(img,lang='eng')
print(text)

img = cv2.imread('kor.png')
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
plt.imshow(img)

text = pytesseract.image_to_string(img,lang='kor')
print(text)

img = cv2.imread('num.png')
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)

img = cv2.cvtColor(img, cv2.COLORBGR2GRAY)
, img = cv2.threshold(img, 150,255,0) #이진이미지로 변환해줘야됨
plt.imshow(img, cmap='gray')

text = pytesseract.image_to_string(img,lang='kor')
print(text)


0개의 댓글