텐서플로우로 숫자 인식 학습된 모델을 읽어 OpenCV 의 MouseCallback을 이용하여
입력한 숫자 이미지의 결과를 반복하여 확인 하는 예제 입니다.
숫자이미지를 마우스로 그리고 BackSpace입력시 숫자인식 결과를 반복적으로 보여줍니다.
종료하고자 할 경우 ESC 버튼을 누르면 종료됩니다. OpenCV 의 MouseCallback 참고하세요
텐서플로우 숫자 인식 모델을 읽어 손글씨 숫자를 인식 검증하는 예제
# OpenCV MouseCallback
import cv2
import numpy as np
from skimage import io
from skimage.transform import resize
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow import keras
# 학습된 모델을 LOAD
model = keras.models.load_model('My_MNIST_CNN_DATA.h5')
model.summary()
drawing = False # True is Mouse Click
ix, iy = -1, -1
# Mouse Callback
def draw_circle(event, x, y, flags, param):
global ix, iy, drawing, mode
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
if event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.circle(img, (x, y), 5, (255, 255, 255), -1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.circle(img, (x, y), 5, (255, 255, 255), -1)
def Answer(img):
img = cv2.resize(img, (28, 28), interpolation=cv2.INTER_AREA)
test_num = img[:,:,0]
test_num = (test_num > 0.1) * test_num
test_num = test_num.astype('float32')
plt.imshow(test_num, cmap='Greys', interpolation='nearest')
test_num = test_num.reshape((1, 28, 28, 1))
print('Answer : ', model.predict_classes(test_num))
# black Area Create
img = np.zeros((300, 300, 3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_circle)
# Image Mouse input
while(1):
cv2.imshow('image', img)
k = cv2.waitKey(1) & 0xFF
if k == 27: # ESC-CLOSE
break
elif k == 8: # Back Space
Answer(img)
img = np.zeros((300, 300, 3), np.uint8)
#---------------------------------------
cv2.destroyAllWindows()
실행 결과
'TensorFlow 2.0' 카테고리의 다른 글
Torchvision 을 사용한 사람의 키포인트를 찾아내는 딥러닝 모델 예제 (0) | 2019.11.23 |
---|---|
Time Series Datasets 으로 예측하기 예제 (0) | 2019.11.19 |
텐서플로우 손글씨 숫자 인식 학습하고 결과 저장하기 예제 (0) | 2019.11.11 |
텐서플로우 학습모델(HDF5) 저장하고 불러오기 예제 (0) | 2019.11.03 |
텐서플로우 학습된 가중치만 저장하고 불러오기 예제 (0) | 2019.11.03 |