From 2f725743f019da950f6abbafc1b22857d5d8c573 Mon Sep 17 00:00:00 2001 From: ori Date: Sun, 14 Jul 2019 12:36:41 -0700 Subject: [PATCH] added contour merge for contour grouping --- backend/Main.py | 6 -- backend/app/handlers/VisionHandler.py | 32 ++++++++--- .../settings/cams/USB Camera-B4.09.24.1.json | 1 + .../src/components/ch-range-ratio.vue | 57 +++++++++++++++++++ 4 files changed, 82 insertions(+), 14 deletions(-) create mode 100644 backend/settings/cams/USB Camera-B4.09.24.1.json create mode 100644 chameleon-client/src/components/ch-range-ratio.vue diff --git a/backend/Main.py b/backend/Main.py index aa9e7ec39..d1c752ba2 100644 --- a/backend/Main.py +++ b/backend/Main.py @@ -1,11 +1,5 @@ -from multiprocessing import Queue -from multiprocessing.managers import BaseManager - import tornado.ioloop -import multiprocessing import logging -from cscore import CameraServer - from app.ChameleonVisionApp import ChameleonApplication from app.classes.SettingsManager import SettingsManager from tornado.options import options diff --git a/backend/app/handlers/VisionHandler.py b/backend/app/handlers/VisionHandler.py index 33a1aea6e..13e62f422 100644 --- a/backend/app/handlers/VisionHandler.py +++ b/backend/app/handlers/VisionHandler.py @@ -137,18 +137,26 @@ class VisionHandler(metaclass=Singleton): return False if target_group != TargetGroup.Single: f_contour_list = [] - for index, contour in i_contours: - finall_contour = contour - for c in range(target_group): - first_contour = i_contours[index + c] - second_contour = i_contours[index + c + 1] + for index, g_contour in enumerate(i_contours): + final_contour = g_contour + for c in range(target_group.value): + try: + first_contour = i_contours[index + c] + second_contour = i_contours[index + c + 1] + except IndexError: + continue if is_intersecting(first_contour, second_contour, intersection_point): - pass + final_contour = numpy.concatenate((final_contour, second_contour)) else: continue + + f_contour_list.append(final_contour) + + return f_contour_list else: return i_contours + '''start of the first filtration of contours''' filtered_contours = [] for contour in input_contours: try: @@ -177,8 +185,9 @@ class VisionHandler(metaclass=Singleton): except Exception as e: print(e) continue - + #checking for contour grouping before sorting grouped_contours = group_target(filtered_contours, TargetGroup[target_grouping], target_intersection) + sorted_contours = getattr(self.sort_mode, sort_mode)(grouped_contours) return sorted_contours @@ -217,6 +226,12 @@ class VisionHandler(metaclass=Singleton): port += 1 def thread_proc(self, cs, cam_name, port=5557): + + def change_camera_values(): + SettingsManager.usb_cameras[cam_name].setBrightness(0) + SettingsManager.usb_cameras[cam_name].setExposureManual(0) + SettingsManager.usb_cameras[cam_name].setWhiteBalanceAuto() + cv_sink = cs.getVideo(camera=SettingsManager.usb_cameras[cam_name]) width = SettingsManager().cams[cam_name]["video_mode"]["width"] @@ -303,7 +318,8 @@ class VisionHandler(metaclass=Singleton): extent=curr_pipeline['extent'], sort_mode=curr_pipeline['sort_mode'], cam_area=cam_area, target_grouping=curr_pipeline['target_group'], - target_intersection=curr_pipeline['target_intersection']) + target_intersection= + curr_pipeline['target_intersection']) res = self.draw_image(input_image=image, is_binary=False, contours=filtered_contours) socket.send_pyobj(res) diff --git a/backend/settings/cams/USB Camera-B4.09.24.1.json b/backend/settings/cams/USB Camera-B4.09.24.1.json new file mode 100644 index 000000000..66fe925f8 --- /dev/null +++ b/backend/settings/cams/USB Camera-B4.09.24.1.json @@ -0,0 +1 @@ +{"pipelines": {"pipeline0": {"exposure": 50, "brightness": 11, "orientation": "Normal", "resolution": [320, 160], "hue": [0, 100], "saturation": [0, 100], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 20], "extent": [0, 100], "is_binary": "Normal", "sort_mode": "Largest", "target_group": "Single", "target_intersection": "Up"}}, "path": "/dev/v4l/by-path/pci-0000:02:03.0-usb-0:1:1.0-video-index0", "video_mode": {"fps": 187, "width": 320, "height": 240, "pixel_format": "kYUYV"}} \ No newline at end of file diff --git a/chameleon-client/src/components/ch-range-ratio.vue b/chameleon-client/src/components/ch-range-ratio.vue new file mode 100644 index 000000000..72564c42c --- /dev/null +++ b/chameleon-client/src/components/ch-range-ratio.vue @@ -0,0 +1,57 @@ + + + + + + +