@@ -78,20 +78,58 @@ def __init__(self, *args, **kwargs):
7878 trg_source_names = [x .name for x in TrgSourceMap ]
7979 #set up queue to store images as they are acquired
8080 self ._queue = queue .Queue ()
81-
81+ self ._awb_modes = picamera .PiCamera .AWB_MODES
82+ self ._iso_modes = [0 , 100 , 200 , 320 , 400 , 500 , 640 , 800 ]
8283 def _trigger_source_setter (index : int ) -> None :
8384 trigger_type = TrgSourceMap [trg_source_names [index ]].value
8485 self .set_trigger (trigger_type , self .trigger_mode )
8586
8687 self .add_setting (
87- "trigger source" ,
88+ "trig source" ,
8889 "enum" ,
8990 lambda : TrgSourceMap (self ._trigger_type ).name ,
9091 _trigger_source_setter ,
9192 trg_source_names ,
9293 )
94+ self .add_setting (
95+ "AWB" ,
96+ "enum" ,
97+ lambda : self ._awb_modes [self .get_awb_mode ()],
98+ lambda awb : self .set_awb_mode (awb ),
99+ values = (list (self ._awb_modes .keys ())),
100+ )
101+
102+ self .add_setting (
103+ "ISO" ,
104+ "enum" ,
105+ lambda : self ._iso_modes .index (self .camera .iso ),
106+ lambda iso : self .set_iso_mode (iso ),
107+ values = (self ._iso_modes ),
108+ )
109+
110+
111+ # self.add_setting(
112+ # "pixel size",
113+ # "float",
114+ # lambda: self._pixel_size,
115+ # lambda pxsz: setattr(self, "_pixel_size", pxsz),
116+ # # technically should be: (nextafter(0.0, inf), nextafter(inf, 0.0))
117+ # values=(0.0, float("inf")),
118+ # )
93119 self .initialize ()
94120
121+ def get_awb_mode (self ):
122+ return (self .camera .awb_mode )
123+
124+ def set_awb_mode (self ,val ):
125+ for key , value in self ._awb_modes .items ():
126+ if value == val :
127+ self .camera .awb_mode = key
128+
129+ def set_iso_mode (self ,val ):
130+ self .camera .iso = self ._iso_modes [val ]
131+
132+
95133
96134 def HW_trigger (self ,channel ):
97135 '''Function called by GPIO interupt, needs to trigger image capture'''
@@ -118,11 +156,16 @@ def initialize(self):
118156 except :
119157 raise Exception ("Problem opening camera." )
120158 _logger .info ('Initializing camera.' )
159+ self .camversion = self .camera .revision
160+ _logger .info ('cam version ' + self .camversion )
161+
121162 #create img buffer to hold images.
122163 #disable camera LED by default
123164 self .setLED (False )
165+ self .set_awb_mode (0 ) # set auto white balance to off
124166 self ._get_sensor_shape ()
125167
168+
126169 def make_safe (self ):
127170 if self ._acquiring :
128171 self .abort ()
@@ -213,7 +256,10 @@ def get_cycle_time(self):
213256
214257
215258 def _get_sensor_shape (self ):
216- res = self .camera .resolution
259+ if self .camversion == 'ov5647' : #picam version 1
260+ self .camera .resolution = (2592 ,1944 )
261+ #faqll back to defualt if not set above.
262+ res = self .camera .resolution
217263 self ._set_roi (0 ,0 ,res [0 ],res [1 ])
218264 return (res )
219265 def _do_trigger (self ):
@@ -229,10 +275,6 @@ def soft_trigger(self):
229275
230276
231277
232- def HWtrigger (self , pin ):
233- _logger .info ('HWTrigger received' )
234-
235-
236278#ongoing implemetation notes
237279
238280#should be able to use rotation and hflip to set specific output image
0 commit comments