본문 바로가기
[최대48만원] 인터넷•TV 가입시 설치당일 현금지급 정수기 렌탈시 최대50만원 추가지급
카테고리 없음

텐서플로우 케라스로 크롬 공룡게임 A.I 만들기 (소스 첨부)

by 업무자동화 2020. 4. 30.
반응형

마이크로소프트의 C#은 그리 어렵지 않게 OpenCV를 설치할 수 있는데요. 아직까지도 외부 언어들에 대해서는 에러가 발생하곤 합니다. 이번에 Visual Studio에서 Python을 개발하기 위한 환경을 구성하면서 여러가지 난관에 부딪히고 있네요-_-;

No module named 'cv2'

 

 

 

import cv2를 입력하면 모듈이 인식이 안됩니다. 하지만~ 대문자로 CV2를 import 시키면 인식하죠. 어떤 이유인지는 모르겠지만 Visual Studio의 PyPI로 설치하면 무언가 대소문자가 잘못되는듯 합니다. 뭐 예상만 할뿐~ 로우레벨까지 까볼(분석) 생각은 하지도 않게 되네요. 바쁘니까요-_-;

 

 

 

아무튼, 설치되어 있는 아나콘다3을 이용해서 설치해보기로 합니다. 윈도우 시작 메뉴 옆 검색창에서 anaconda를 입력하고 Anaconda Prompt (Anaconda3)을 클릭하세요. 아나콘다는 [ 여기 ]에서 다운로드 받을 수 있습니다.

 

 

아래와 같이 입력하고 설치하세요.

pip install opencv-python

 

 

뭐 비주얼 스튜디오에서 설치하는 것과 크게 다르지 않습니다. 그런데 왜 비주얼 스튜디오에서는 CV2로 모듈 이름이 만들어지는지 모르겠네요-_-; 아무튼 잘 되는지 확인해봐야겠죠? 간단한 샘플 코드인데요. Python 딥러닝 게시판에 있는 코드를 토대로 작성했습니다. [ 원본 블로그 보기 ] 솔루션 소스 코드는 첨부되어 있으니 다운로드 받아서 해보세요^^

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

import cv2 as cv

import numpy as np

 

img_rgb = cv.imread('images/test.png')

img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)

 

template1 = cv.imread('images/cactus1.png'0)

template2 = cv.imread('images/cactus2.png'0)

template3 = cv.imread('images/bird1.png'0)

template4 = cv.imread('images/bird2.png'0)

 

w1, h1 = template1.shape[::-1]

w2, h2 = template2.shape[::-1]

w3, h3 = template3.shape[::-1]

w4, h4 = template4.shape[::-1]

 

res1 = cv.matchTemplate(img_gray, template1, cv.TM_CCOEFF_NORMED)

res2 = cv.matchTemplate(img_gray, template2, cv.TM_CCOEFF_NORMED)

res3 = cv.matchTemplate(img_gray, template3, cv.TM_CCOEFF_NORMED)

res4 = cv.matchTemplate(img_gray, template4, cv.TM_CCOEFF_NORMED)

 

threshold = 0.8

loc1 = np.where(res1 >= threshold)

loc2 = np.where(res2 >= threshold)

loc3 = np.where(res1 >= threshold)

loc4 = np.where(res2 >= threshold)

 

for pt in zip(*loc1[::-1]):

    cv.rectangle(img_rgb, pt, (pt[0+ w1, pt[1+ h1), (00255), 2)

 

for pt in zip(*loc2[::-1]):

    cv.rectangle(img_rgb, pt, (pt[0+ w2, pt[1+ h2), (02550), 2)

 

for pt in zip(*loc1[::-1]):

    cv.rectangle(img_rgb, pt, (pt[0+ w3, pt[1+ h3), (00255), 2)

 

for pt in zip(*loc2[::-1]):

    cv.rectangle(img_rgb, pt, (pt[0+ w4, pt[1+ h4), (02550), 2)

 

cv.imshow('result', img_rgb)

cv.waitKey(0)

 

Colored by Color Scripter

cs

 

 

참고한 블로그의 결과와 다르게 나오는군요-_-; 아무튼 그래도 검출은 잘 되었네요. 아마도... 2번 실행된게 아닌가 생각됩니다.

 

 

아래는 얼굴 인식인데요. 이것도 그렇게 인식률이 좋지는 않네요. 머신 러닝 관련 자료들을 찾다보니 정말 다양한 형식으로 모델이 존재하고 방식도 천차만별인걸 알게 되었습니다. 어떤걸 선택해서 사용해야 할지 참 고민이네요...ㅋ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

import cv2

import sys

 

image_file = "images/face.jpg"

cascade_file = "data/haarcascades/haarcascade_frontalface_alt.xml"

 

image = cv2.imread(image_file)

image_gs = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

 

cascade = cv2.CascadeClassifier(cascade_file)

face_list = cascade.detectMultiScale(image_gs, scaleFactor=1.1, minNeighbors=1, minSize=(150150))

 

if len(face_list) > 0:

    print(face_list)

    color = (00255)

    for face in face_list:

        x, y, w, h = face

        cv2.rectangle(image, (x, y), (x+w, y+h), color, thickness=8)

else:

    print("no face")

 

cv2.imshow('result', image)

cv2.waitKey(0)

Colored by Color Scripter

cs

 

 

위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다. 50프로밖에 인식이 안되네요. 전체 솔루션 소스는 첨부해두었으니 관심 있는 분들은 다운로드 받아서 테스트 해보세요~

 

 

간단하게 에러만 해결하려고 했는데... 글을 적다보니 길어졌네요-_-;

반응형

댓글