This commit is contained in:
alexgobbo
2024-09-20 12:06:58 +02:00
parent 0692cd7cdc
commit 2c69347d7f
9 changed files with 95 additions and 47 deletions
+17 -4
View File
@@ -11,12 +11,20 @@ class CoverDetectionConfig(RegisterConfig):
self.center_y = 570.0
self.scale_x = 1.0
self.scale_y = 1.0
self.scale_y = 1.0
self.threshold = 0.60
self.correlation_threshold = 0.60
self.diameter_target=95
self.diamter_disk=670
self.diamter_dewar=1800
self.size_mask_disk=0.8
self.size_mask_dewar=0.98
self.max_detect_offset=10
self.open_strategy = "both"
class CoverCorrelation(ReadonlyAsyncRegisterBase):
def __init__(self, name):
ReadonlyAsyncRegisterBase.__init__(self, name)
self.precision = 3
def set(self, value):
self.onReadout(value)
@@ -96,7 +104,12 @@ class CoverDetection(ReadonlyAsyncRegisterBase, ReadonlyRegisterArray):
ip = integrate(self.images)
try:
self.error = None
x,y = detect(ip)
center = (self.config.center_x, self.config.center_y)
x,y = detect(ip, center, \
diam_target=self.config.diameter_target, diam_disk= self.config.diamter_disk, diam_dewar=self.config.diamter_dewar, \
mask_disk=self.config.size_mask_disk, mask_dewar=self.config.size_mask_dewar, \
offset_threshold=self.config.max_detect_offset ,open_strategy= self.config.open_strategy)
except Exception as e:
self.error = e
x,y = -1, -1
@@ -170,7 +183,7 @@ class CoverDetection(ReadonlyAsyncRegisterBase, ReadonlyRegisterArray):
def set_correlation(self, corr):
self.corr = corr
error = corr is not None and corr < self.config.threshold
error = corr is not None and corr < self.config.correlation_threshold
if error != self.correlation_error:
self.correlation_error = error
if error:
+8 -2
View File
@@ -80,13 +80,19 @@ class VmbCamera (CameraBase):
self.write_parameter("BinningHorizontal", value)
def getBinningX(self):
return self.read_parameter("BinningHorizontal")
try:
return self.read_parameter("BinningHorizontal")
except:
return 1
def setBinningY(self, value):
self.write_parameter("BinningVertical", value)
def getBinningY(self):
return self.read_parameter("BinningVertical")
try:
return self.read_parameter("BinningVertical")
except:
return 1
def setROI(self, x, y, w, h):
self.write_parameter("OffsetX", 0)