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 @@
+
+
+
+
+ {{title.charAt(0).toUpperCase() + title.slice(1)}} :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+