1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
2018-05-25 16:15:44 +10:00

74 lines
2.2 KiB
Python

import numpy as np
from keras.models import Model, load_model
from keras.utils import to_categorical
import cv2
from skimage import color, exposure
from _cutter import image_cut
def man_result_check():
pred_y = np.load("predicted_results.npy")
test_y = np.load("Waldo_test_lbl.npy")
test_y = to_categorical(test_y)
f = open("test_output.txt", 'w')
z = 0
for i in range(0, len(test_y)):
print(pred_y[i], test_y[i], file=f)
# Calculates correct predictions
if pred_y[i][0] == test_y[i][0]:
z+=1
print("Accuracy: {}%".format(z/len(test_y)*100))
f.close()
'''
Purpose:Loads a trained neural network model (using Keras) to classify an image
Input: path/to/trained_model
image [or] path/to/image [if from_file=True]
Returns:Boolean variable
'''
def is_Wally(trained_model_path, image, from_file=False):
if from_file:
img = cv2.imread(image) # Opens the image (in BGR format)
# Histogram normalization in v channel
hsv = color.rgb2hsv(img)
hsv[:, :, 2] = exposure.equalize_hist(hsv[:, :, 2])
img = color.hsv2rgb(hsv)
image = np.rollaxis(img, -1) # Rolls the colour axis to the front
trained_model = load_model(trained_model_path)
if trained_model.predict(image, verbose=1, batch_size=1)[0] == 1:
return 0
else:
return 1
# Load fully puzzle image
# Split image into array of images
# use is_Wally(img) to classify image
# Mark Wally image somehow (colour the border)
# Stitch original image back together
if __name__ == '__main__':
# Read image
image = cv2.imread("10.jpg")
# Split image
cuts = image_cut(image, 64, 64)
for i in range(len(cuts)):
# Transform block
hsv = color.rgb2hsv(cuts[i])
hsv[:, :, 2] = exposure.equalize_hist(hsv[:, :, 2])
block = color.hsv2rgb(hsv)
block = np.rollaxis(block, -1)
if is_Wally("Waldo.h5", block):
# if True:
# Border block
GREEN = [0, 255, 0]
cuts[i] = cv2.copyMakeBorder(cuts[i][1:61,1:61],2,2,2,2,cv2.BORDER_CONSTANT,value=GREEN)
# Stitch image TODO!
# Show image
cv2.imwrite('output.png',image)