From 899a64cc14bafae68ebb00493c2fcaa732ebd6b8 Mon Sep 17 00:00:00 2001 From: sfop Date: Mon, 29 May 2017 12:17:07 +0200 Subject: [PATCH] Script execution --- script/Devices/ImageStats.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/script/Devices/ImageStats.py b/script/Devices/ImageStats.py index 54bbd8e..d264236 100644 --- a/script/Devices/ImageStats.py +++ b/script/Devices/ImageStats.py @@ -125,6 +125,16 @@ class ImageStats(DeviceBase): set_device_alias(self.com_y_stdev, name + " com y stdev") self.bg_en = False self.num_images = 5 + + class BackgroundSubtractor(Filter): + def __init__(self, obj): + self.obj=obj + def process(self, image, data): + if self.obj.background is None: + raise Exception("No background captured") + return sub(image, self.obj.background, True) + self.backgroundFilter = BackgroundSubtractor(self) + self.initialize() #class SourceListener (ImageListener): @@ -167,17 +177,20 @@ class ImageStats(DeviceBase): def enableBackground(self, value): self.bg_en = value - class BackgroundSubtractor(Filter): - def __init__(self, obj): - self.obj=obj - def process(self, image, data): - if self.obj.background is None: - return image - return sub(image, self.obj.background, True) - self.source.filter = BackgroundSubtractor(self) if (value==True) else None + self.source.filter = self.backgroundFilter if self.bg_en else None def captureBackground(self, images): - self.doInitialize() + try: + self.source.filter = None + imgs = [] + for i in range(images): + self.source.waitNext(5000) + imgs.append(cam3.output) + #TODO: + self.background = cam3.output + finally: + self.enableBackground(self.bg_en) + def doClose(self): print "close" @@ -217,6 +230,8 @@ if __name__ == "__builtin__": image_stats.setNumberOfImages(3) sensors = [image_stats.com_x_mean, image_stats.com_y_mean, image_stats.com_x_stdev, image_stats.com_y_stdev] + image_stats.captureBackground(5) + def before_sample(): image_stats.update() tscan(sensors, 10, 0.1, before_read = before_sample)