Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from os import path
- from shutil import rmtree
- import pyodbc
- from neuro import Neuro
- from frame import Frame
- server = '10.0.0.43'
- database = 'mb'
- username = 'usrMB'
- password = 'asdqaz'
- class Processing(object):
- def __init__(self, save_path, sqr_percent):
- self.save_path = save_path
- self.sqr_percent = sqr_percent
- self.conn = pyodbc.connect('DSN=MSSQL;UID=usrMB;PWD=asdqaz')
- self.cam_zone_command = "SELECT id_cam, id_type_zone, sensitivity, x1, y1 ,x2, y2, x3, y3, x4, y4 " \
- "FROM CamZones WHERE id_cam = %s AND id_type_zone IN (SELECT id_type_zone FROM TypesProcessingZone WHERE id_type_proces$
- self.sql_command = 'SELECT id, id_video, shopNo, date_add, id_cam, id_type_processing, data_processing, alarm ' \
- 'FROM TasksForAnalisis WHERE id_type_processing = 1'
- self.update_task_alarm = "UPDATE TasksForAnalisis SET alarm = %s WHERE id = %s"
- self.insert_to_detected = "INSERT INTO DetectedObjects(ID_task_for_analisis,ID_type_object,X1,Y1,X2,Y2) " \
- "VALUES (%s,%s,%s,%s,%s,%s)"
- self.times_for_video = "SELECT link_download FROM times_for_video WHERE id = %s"
- def close_connection(self):
- self.conn.close()
- def get_db_version(self):
- cursor = self.conn.cursor()
- cursor.execute("SELECT @@version;")
- row = cursor.fetchone()
- while row:
- print(row)
- break
- def get_thresh_interest_zones(self, cursor, sql_str):
- interest_zones = []
- yolo_threshs = []
- yolo_thresh = 0.13
- cursor.execute(sql_str)
- for row in cursor.fetchall():
- print('SUBQUERY:', row)
- yolo_threshs.append(row[2])
- zone = []
- zone.append(row[3])
- zone.append(row[4])
- zone.append(row[5])
- zone.append(row[6])
- zone.append(row[7])
- zone.append(row[8])
- zone.append(row[9])
- zone.append(row[10])
- interest_zones.append(zone)
- print("ZONES_INTEREST:", interest_zones)
- if len(yolo_threshs) > 0:
- yolo_thresh = min([float(t) for t in yolo_threshs])
- return yolo_thresh, interest_zones
- def process(self):
- self.neuro_network = Neuro()
- cursor = self.conn.cursor()
- cursor.execute(self.sql_command)
- results = cursor.fetchall()
- for result in results:
- print("MAIN:", result)
- id_task, id_video = result[0], result[1]
- # по иден?^?и?^?ика?^?о?^??^? видео в?^??^?а?^?им ?^??^??^?лк?^? на ?^?ка?^?ивание
- cursor.execute(self.times_for_video % id_video)
- link_for_download = cursor.fetchone()[0]
- print('Link for download', link_for_download)
- if link_for_download is None or link_for_download == '':
- print('Not valid link, continue')
- continue
- # е?^?ли ?^??^??^?лка на ?^?ка?^?ивание не п?^??^??^?а, ?^?ка?^?аем ?^?айл
- file_name = 'temp.jpg'
- if not Frame.download_frame(link_for_download, file_name):
- print('Image not downloaded, continue')
- continue
- # в?^??^?а?^?им из ?^?абли?^??^? CamZones ин?^?о?^?ма?^?и?^? о по?^?оге и зона?^? ин?^?е?^?е?^?а
- id_cam, id_type_processing = result[4], result[5]
- print("id_cam", id_cam, " id_type_processing", id_type_processing)
- sql_cam_zones = self.cam_zone_command % (id_cam)
- yolo_thresh, interest_zones = self.get_thresh_interest_zones(cursor, sql_cam_zones)
- print("yolo_thresh", yolo_thresh)
- print("interest_zones", interest_zones)
- import os
- images, frames = Frame.image_treatment(os.getcwd()+'/'+file_name, self.save_path, interest_zones, yolo_thresh,
- self.sqr_percent)
- print("images", images)
- print('frames', frames)
- alarm = 0
- for i in range(len(images)):
- p = self.neuro_network.predict(images[i])
- print('predict:', p, self.neuro_network.get_real_class_name_by_number(p))
- if self.neuro_network.is_alarm_class(p):
- alarm = 1
- id_type_object = self.neuro_network.our_class_db_mapper(p)
- insert = self.insert_to_detected % (id_task, id_type_object, frames[i][0], frames[i][1], frames[i][2], frames[i][3])
- cursor.execute(insert)
- self.conn.commit()
- cursor.execute(self.update_task_alarm % (alarm, id_task))
- self.conn.commit()
- try:
- print("Removing folder:", path.join(self.save_path, file_name))
- rmtree(path.join(self.save_path,file_name))
- except Exception as e:
- print(e)
- print("end of processing")
- if __name__ == '__main__':
- p = Processing('/home/user1/', 40)
- p.get_db_version()
- p.process()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement