update for automate prediction
This commit is contained in:
80
watcher.py
Normal file
80
watcher.py
Normal file
@ -0,0 +1,80 @@
|
||||
import sys
|
||||
import os, shutil
|
||||
import time
|
||||
import logging
|
||||
from watchdog.observers import Observer
|
||||
from watchdog.events import FileSystemEventHandler
|
||||
import numpy as np
|
||||
from tensorflow.keras.models import load_model
|
||||
from keras.preprocessing.image import load_img, ImageDataGenerator, array_to_img, img_to_array
|
||||
|
||||
class fileMmonitor(FileSystemEventHandler):
|
||||
|
||||
def predict(self, model, image):
|
||||
img_size = int(params['image_size'])
|
||||
mdl = load_model(model)
|
||||
target_folder = params['target_folder']
|
||||
file_name = os.path.basename(image)
|
||||
img = load_img(image, target_size=(img_size,img_size))
|
||||
img = img_to_array(img)
|
||||
img = img.reshape(1,img_size,img_size,3)
|
||||
res = mdl.predict(img)
|
||||
#print(res)
|
||||
cat = np.argmax(res)
|
||||
print(cat)
|
||||
cat_path = os.path.join(target_folder,str(cat))
|
||||
#dir_name = os.path.dirname(cat_path)
|
||||
if not os.path.exists(cat_path):
|
||||
print("cat path created")
|
||||
os.makedirs(cat_path)
|
||||
|
||||
try:
|
||||
print(image)
|
||||
print(os.path.join(cat_path, image))
|
||||
shutil.move(image, os.path.join(cat_path, file_name))
|
||||
except Exception as err:
|
||||
print("An error was handled", err)
|
||||
|
||||
#print([key for key in class_labels][np.argmax(res)])
|
||||
|
||||
def on_created(self, event):
|
||||
#print(type(event))
|
||||
print(event.src_path)
|
||||
print(event.is_directory)
|
||||
print(event.event_type)
|
||||
|
||||
fle = event.src_path
|
||||
if fle.lower().endswith('jpg') or fle.lower().endswith('png') or fle.lower().endswith('jpeg'):
|
||||
self.predict(params['model'], fle)
|
||||
# #return super().on_created(event)
|
||||
# for fle in os.listdir(folder_to_watch):
|
||||
# if fle.lower().endswith('jpg') or fle.lower().endswith('png') or fle.lower().endswith('jpeg'):
|
||||
# #print(fle);
|
||||
# pass;
|
||||
|
||||
# read params from dat file
|
||||
fle = open("params.dat")
|
||||
params = {}
|
||||
for line in fle:
|
||||
if line.startswith('#'):
|
||||
continue
|
||||
#print(line.strip())
|
||||
key, val = line.split('=')
|
||||
params[key.strip()] = val.strip()
|
||||
#print(params)
|
||||
|
||||
print(params['monitering_folder'])
|
||||
|
||||
folder_to_watch = params['monitering_folder']
|
||||
observer = Observer()
|
||||
handler = fileMmonitor()
|
||||
observer.schedule(handler, folder_to_watch, recursive=True)
|
||||
observer.start()
|
||||
|
||||
try:
|
||||
while True:
|
||||
time.sleep(2)
|
||||
except KeyboardInterrupt:
|
||||
observer.stop()
|
||||
|
||||
observer.join()
|
||||
Reference in New Issue
Block a user