@@ -109,7 +109,7 @@ def __init__(self, config_file, cam_param, downscale=3, mm_dir = "C:/Program Fil
109109 if key not in ["name" , "MMconfig" ]:
110110 try :
111111 self .mmc .setProperty (self .name , key , config [key ])
112- logger .info (key , self .get_param (key ))
112+ logger .info ("Set config parameter %s=%s" , key , self .get_param (key ))
113113 except Exception as e :
114114 logger .error (f"Failed to update parameter '{ key } ' with value '{ config [key ]} ': { e } " )
115115
@@ -119,7 +119,7 @@ def __init__(self, config_file, cam_param, downscale=3, mm_dir = "C:/Program Fil
119119 for key in cam_param :
120120 try :
121121 self .mmc .setProperty (self .name , key , cam_param [key ])
122- logger .info (key , self .get_param (key ))
122+ logger .info ("Set local parameter %s=%s" , key , self .get_param (key ))
123123
124124 except Exception as e :
125125 logger .error (f"Failed to update parameter '{ key } ' with value '{ cam_param [key ]} ': { e } " )
@@ -136,7 +136,7 @@ def update_param(self, key, val):
136136 """
137137 try :
138138 self .mmc .setProperty (self .name , key , val )
139- logger .info (key , self .get_param (key ))
139+ logger .info ("Updated parameter %s=%s" , key , self .get_param (key ))
140140
141141 except Exception as e :
142142 logger .error (f"Failed to update parameter '{ key } ' with value '{ val } ': { e } " )
@@ -161,27 +161,42 @@ def get_param(self, key):
161161 def continuous_stream (self , transform = None ):
162162 """
163163 Perform continuous streaming of the camera frames and display them in a window.
164+
165+ The window is shown at a reduced size so that large sensor
166+ images still fit on screen. Press 'q' to close.
164167 """
165- cv2 .namedWindow ('live' ,cv2 .WINDOW_AUTOSIZE )
168+ cv2 .namedWindow ('live' , cv2 .WINDOW_NORMAL )
166169 self .mmc .startContinuousSequenceAcquisition (1 )
167170 while True :
168171 if self .mmc .getRemainingImageCount () > 0 :
169172 self .frame = self .mmc .popNextImage ()
170- self .image = np .mean (self .frame [:,:,:3 ], axis = 2 )
171- #self.image = np.array(Image.fromarray(np.uint8(self.frame)))
172- #self.image[self.image<np.quantile(self.image, 0.99)] = 0
173+ # Average RGB channels to get a grayscale image (like original code)
174+ self .image = np .mean (self .frame [:, :, :3 ], axis = 2 )
175+ # self.image = np.array(Image.fromarray(np.uint8(self.frame)))
176+ # self.image[self.image<np.quantile(self.image, 0.99)] = 0
177+
173178 if transform is not None :
174- # Apply the transform function here
175- transformed_image = self .image .copy ()
176- transformed_image = transform (transformed_image )
177- image = resize (self .image , transformed_image .shape )
178- # Create a combined image by stacking the original and transformed images horizontally
179- combined_image = np .hstack ((image , transformed_image ))
180- # Display the combined image
181-
182- cv2 .imshow ('live' , cv2 .normalize (combined_image , None , 255 , 0 , cv2 .NORM_MINMAX , cv2 .CV_8UC1 ))
179+ # Apply the transform function here
180+ transformed_image = self .image .copy ()
181+ transformed_image = transform (transformed_image )
182+ image = resize (self .image , transformed_image .shape )
183+ # Create a combined image by stacking the original and transformed images horizontally
184+ combined_image = np .hstack ((image , transformed_image ))
185+ # Display the combined image (downscaled for the screen)
186+ disp = cv2 .normalize (combined_image , None , 255 , 0 , cv2 .NORM_MINMAX , cv2 .CV_8UC1 )
183187 else :
184- cv2 .imshow ('live' , cv2 .normalize (self .image , None , 255 ,0 , cv2 .NORM_MINMAX , cv2 .CV_8UC1 ))
188+ disp = cv2 .normalize (self .image , None , 255 , 0 , cv2 .NORM_MINMAX , cv2 .CV_8UC1 )
189+
190+ # Downscale display image if it is larger than a typical window
191+ max_h , max_w = 600 , 800
192+ h , w = disp .shape [:2 ]
193+ scale = min (max_h / h , max_w / w , 1.0 )
194+ if scale < 1.0 :
195+ new_size = (int (w * scale ), int (h * scale ))
196+ disp = cv2 .resize (disp , new_size , interpolation = cv2 .INTER_AREA )
197+
198+ cv2 .imshow ('live' , disp )
199+
185200 if cv2 .waitKey (1 ) & 0xFF == ord ('q' ):
186201 break
187202
@@ -293,4 +308,3 @@ def save_video(self, save_folder, _run=None):
293308 _run .add_artifact (fname , "video.tiff" )
294309 _run .add_artifact (fname , "video_timing.csv" )
295310 return result , timing
296-
0 commit comments