Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. from os import path
  2. from shutil import rmtree
  3. import pyodbc
  4. from neuro import Neuro
  5. from frame import Frame
  6.  
  7. server = '10.0.0.43'
  8. database = 'mb'
  9. username = 'usrMB'
  10. password = 'asdqaz'
  11.  
  12.  
  13. class Processing(object):
  14. def __init__(self, save_path, sqr_percent):
  15. self.save_path = save_path
  16.  
  17. self.sqr_percent = sqr_percent
  18.  
  19. self.conn = pyodbc.connect('DSN=MSSQL;UID=usrMB;PWD=asdqaz')
  20.  
  21. self.cam_zone_command = "SELECT id_cam, id_type_zone, sensitivity, x1, y1 ,x2, y2, x3, y3, x4, y4 " \
  22. "FROM CamZones WHERE id_cam = %s AND id_type_zone IN (SELECT id_type_zone FROM TypesProcessingZone WHERE id_type_proces$
  23.  
  24. self.sql_command = 'SELECT id, id_video, shopNo, date_add, id_cam, id_type_processing, data_processing, alarm ' \
  25. 'FROM TasksForAnalisis WHERE id_type_processing = 1'
  26.  
  27. self.update_task_alarm = "UPDATE TasksForAnalisis SET alarm = %s WHERE id = %s"
  28.  
  29. self.insert_to_detected = "INSERT INTO DetectedObjects(ID_task_for_analisis,ID_type_object,X1,Y1,X2,Y2) " \
  30. "VALUES (%s,%s,%s,%s,%s,%s)"
  31.  
  32. self.times_for_video = "SELECT link_download FROM times_for_video WHERE id = %s"
  33.  
  34. def close_connection(self):
  35. self.conn.close()
  36.  
  37. def get_db_version(self):
  38. cursor = self.conn.cursor()
  39. cursor.execute("SELECT @@version;")
  40. row = cursor.fetchone()
  41. while row:
  42. print(row)
  43. break
  44.  
  45. def get_thresh_interest_zones(self, cursor, sql_str):
  46. interest_zones = []
  47. yolo_threshs = []
  48. yolo_thresh = 0.13
  49. cursor.execute(sql_str)
  50. for row in cursor.fetchall():
  51. print('SUBQUERY:', row)
  52. yolo_threshs.append(row[2])
  53. zone = []
  54.  
  55. zone.append(row[3])
  56. zone.append(row[4])
  57. zone.append(row[5])
  58. zone.append(row[6])
  59.  
  60. zone.append(row[7])
  61. zone.append(row[8])
  62. zone.append(row[9])
  63. zone.append(row[10])
  64. interest_zones.append(zone)
  65. print("ZONES_INTEREST:", interest_zones)
  66. if len(yolo_threshs) > 0:
  67. yolo_thresh = min([float(t) for t in yolo_threshs])
  68. return yolo_thresh, interest_zones
  69.  
  70.  
  71. def process(self):
  72. self.neuro_network = Neuro()
  73.  
  74. cursor = self.conn.cursor()
  75. cursor.execute(self.sql_command)
  76. results = cursor.fetchall()
  77. for result in results:
  78. print("MAIN:", result)
  79. id_task, id_video = result[0], result[1]
  80. # по иден?^?и?^?ика?^?о?^??^? видео в?^??^?а?^?им ?^??^??^?лк?^? на ?^?ка?^?ивание
  81. cursor.execute(self.times_for_video % id_video)
  82. link_for_download = cursor.fetchone()[0]
  83. print('Link for download', link_for_download)
  84. if link_for_download is None or link_for_download == '':
  85. print('Not valid link, continue')
  86. continue
  87. # е?^?ли ?^??^??^?лка на ?^?ка?^?ивание не п?^??^??^?а, ?^?ка?^?аем ?^?айл
  88. file_name = 'temp.jpg'
  89. if not Frame.download_frame(link_for_download, file_name):
  90. print('Image not downloaded, continue')
  91. continue
  92. # в?^??^?а?^?им из ?^?абли?^??^? CamZones ин?^?о?^?ма?^?и?^? о по?^?оге и зона?^? ин?^?е?^?е?^?а
  93. id_cam, id_type_processing = result[4], result[5]
  94. print("id_cam", id_cam, " id_type_processing", id_type_processing)
  95. sql_cam_zones = self.cam_zone_command % (id_cam)
  96. yolo_thresh, interest_zones = self.get_thresh_interest_zones(cursor, sql_cam_zones)
  97. print("yolo_thresh", yolo_thresh)
  98. print("interest_zones", interest_zones)
  99. import os
  100. images, frames = Frame.image_treatment(os.getcwd()+'/'+file_name, self.save_path, interest_zones, yolo_thresh,
  101. self.sqr_percent)
  102. print("images", images)
  103. print('frames', frames)
  104. alarm = 0
  105. for i in range(len(images)):
  106. p = self.neuro_network.predict(images[i])
  107. print('predict:', p, self.neuro_network.get_real_class_name_by_number(p))
  108. if self.neuro_network.is_alarm_class(p):
  109. alarm = 1
  110. id_type_object = self.neuro_network.our_class_db_mapper(p)
  111. insert = self.insert_to_detected % (id_task, id_type_object, frames[i][0], frames[i][1], frames[i][2], frames[i][3])
  112. cursor.execute(insert)
  113. self.conn.commit()
  114. cursor.execute(self.update_task_alarm % (alarm, id_task))
  115. self.conn.commit()
  116. try:
  117. print("Removing folder:", path.join(self.save_path, file_name))
  118. rmtree(path.join(self.save_path,file_name))
  119. except Exception as e:
  120. print(e)
  121.  
  122. print("end of processing")
  123.  
  124. if __name__ == '__main__':
  125. p = Processing('/home/user1/', 40)
  126. p.get_db_version()
  127. p.process()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement