|
|
@ -100,26 +100,22 @@ class Core(QThread): |
|
|
|
if frame_1 is not None: |
|
|
|
self.__rtspserver_1.update_frame(frame_1) |
|
|
|
|
|
|
|
sleep(0.03) |
|
|
|
sleep(1/25) |
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
print(e) |
|
|
|
sleep(0.1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
print(e) |
|
|
|
sleep(0.1) |
|
|
|
|
|
|
|
def __detection(self): |
|
|
|
while self.__is_detecting: |
|
|
|
try: |
|
|
|
torch.cuda.empty_cache() |
|
|
|
torch.cuda.set_per_process_memory_fraction() |
|
|
|
source = self.__processing_source |
|
|
|
roi = self.__detection_roi |
|
|
|
frame = source.get_frame() |
|
|
|
cropped_frame = frame[roi[1]:roi[3], roi[0]:roi[2]] |
|
|
|
with torch.no_grad(): |
|
|
|
results = self.__detector.predict(cropped_frame) |
|
|
|
global_bboxes = list() |
|
|
|
for result in results: |
|
|
@ -136,8 +132,11 @@ class Core(QThread): |
|
|
|
print(e) |
|
|
|
sleep(0.1) |
|
|
|
|
|
|
|
|
|
|
|
def __tracking(self): |
|
|
|
source = self.__processing_source |
|
|
|
track_color = (0, 255, 0) #green |
|
|
|
lost_color = (255, 0, 0) #blue |
|
|
|
if showTrack: |
|
|
|
pygame.init() |
|
|
|
|
|
|
@ -167,8 +166,8 @@ class Core(QThread): |
|
|
|
if frame is not None: |
|
|
|
if self.__is_tracking and self.__tracker is not None and self.__tracker_roi is not None : |
|
|
|
x, y, w, h = map(int, self.__tracker_roi) |
|
|
|
box_color = (0, 255, 255) if self.__tracker__succ else (255, 0, 0) |
|
|
|
cv2.rectangle(frame, (x, y), (x + w, y + h), box_color, 2) |
|
|
|
box_color = track_color if self.__tracker__succ else lost_color |
|
|
|
cv2.rectangle(frame, (x, y), (x + w, y + h), box_color, self.__thickness) |
|
|
|
|
|
|
|
if self.__processing_id == 1: |
|
|
|
self.__rtspserver_1.update_frame(frame) |
|
|
|