Added position log

This commit is contained in:
jaknapper 2023-12-29 15:58:51 +00:00
parent 968136e22e
commit 0e32fd1e1f
2 changed files with 33 additions and 11 deletions

View file

@ -48,7 +48,6 @@ class RecentringThing(Thing):
height_max = stage.position["z"] + dz / 2 height_max = stage.position["z"] + dz / 2
data = autofocus.fast_autofocus(dz=dz) data = autofocus.fast_autofocus(dz=dz)
heights, _ = unpack_autofocus(data) heights, _ = unpack_autofocus(data)
print(min(heights), max(heights), stage.position["z"])
time.sleep(0.3) time.sleep(0.3)
# TODO: max heights seems badly wrong! Something about turning? # TODO: max heights seems badly wrong! Something about turning?
if ( if (

View file

@ -138,6 +138,17 @@ def distance_to_site(current, next):
current = np.array(current, dtype="float64") current = np.array(current, dtype="float64")
return np.sqrt((next[1] - current[1]) ** 2 + (next[0] - current[0]) ** 2) return np.sqrt((next[1] - current[1]) ** 2 + (next[0] - current[0]) ** 2)
def generate_config(folder_path: str, positions: list, names: list):
positions = np.array(positions)
mean_loc = np.mean(positions, axis = 0)
with open(os.path.join(folder_path, 'TileConfiguration.txt'), 'w') as fp:
fp.write('# Define the number of dimensions we are working on\ndim = 2\n\n# Define the image coordinates\n')
for i in range(len(names)):
loc = positions[i] - mean_loc
fp.write(f'{names[i]}; ; {loc[1], loc[0]} \n')
class SmartScanThing(Thing): class SmartScanThing(Thing):
@thing_action @thing_action
@ -166,9 +177,9 @@ class SmartScanThing(Thing):
current_keys = settings.external_metadata_in_state current_keys = settings.external_metadata_in_state
logging.info(type(current_keys)) logging.info(type(current_keys))
# if "1background_stats" not in current_keys: if "background_stats" not in current_keys:
current_keys.append("background_stats") current_keys.append("background_stats")
settings.external_metadata_in_state = deepcopy(current_keys) settings.external_metadata_in_state = current_keys
logging.info(settings.external_metadata_in_state) logging.info(settings.external_metadata_in_state)
logging.info(settings.external_metadata) logging.info(settings.external_metadata)
@ -190,6 +201,9 @@ class SmartScanThing(Thing):
# logging.warning("No template set") # logging.warning("No template set")
# raise Exception # raise Exception
names = []
positions = []
previous_dir = 0 previous_dir = 0
# if necessary, move to the starting point for your scan # if necessary, move to the starting point for your scan
@ -274,7 +288,7 @@ class SmartScanThing(Thing):
# mask the image to only include pixels outside 5 stds of the mean of all three channels. # mask the image to only include pixels outside 5 stds of the mean of all three channels.
# get the percent of pixels that are in the mask (assumed sample) # get the percent of pixels that are in the mask (assumed sample)
img_mask = check_dist(img2, stats_list, 3) img_mask = check_dist(img2, stats_list, 5)
background_coverage = round( background_coverage = round(
100 * np.count_nonzero(img_mask) / img_mask.size, 1 100 * np.count_nonzero(img_mask) / img_mask.size, 1
) )
@ -344,20 +358,29 @@ class SmartScanThing(Thing):
stage.move_absolute(z=int(focused_path[z_index][2])) stage.move_absolute(z=int(focused_path[z_index][2]))
attempts += 1 attempts += 1
img = cam.capture_jpeg() img = Image.open(cam.capture_jpeg().open())
img = np.array(Image.open(img.open())) exif = img.info['exif']
img = cv2.resize(img, (0, 0), fx=0.5, fy=0.5) width, height = img.size
img = Image.fromarray(img) img = img.resize((int(width*0.5), int(height*0.5)))
img.save(os.path.join(folder_path, f"rabbit_{loc[0]}_{loc[1]}.jpg")) name = f"rabbit_{loc[0]}_{loc[1]}.jpg"
img.save(os.path.join(folder_path, name), exif = exif)
positions.append(loc[:2])
names.append(name)
img_preview = cam.grab_jpeg() img_preview = cam.grab_jpeg()
img_preview = np.array(Image.open(img_preview.open())) img_preview = np.array(Image.open(img_preview.open()))
# add the current position to the list of all positions visited # add the current position to the list of all positions visited
true_path.append(loc) true_path.append(loc)
# if len(names) > 1:
generate_config(folder_path, positions, names)
path = sorted(path, key=lambda x: distance_to_site(loc[:2], x)) path = sorted(path, key=lambda x: distance_to_site(loc[:2], x))
if len(true_path) > 750: if len(true_path) > 750:
break break
stage.move_absolute(x=starting_loc[0], y=starting_loc[1], z=starting_loc[2]) stage.move_absolute(x=starting_loc[0], y=starting_loc[1], z=starting_loc[2])