Skip to content

Commit 0ac602f

Browse files
committed
wip #71
2 parents 6f18c69 + fea4d8c commit 0ac602f

File tree

13 files changed

+341
-113
lines changed

13 files changed

+341
-113
lines changed

camera.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,19 @@ def __init__(self):
9494
self._cnn_classifier_default = self._cnn_classifiers[cnn_model]
9595

9696
self._camera.grab_start()
97+
self._image_cv = self.get_image()
9798

9899
super(Camera, self).__init__()
99100

100101
def get_image(self):
101102
return image.Image(self._camera.get_image_bgr())
102103

104+
def get_image_cv_jpeg(self):
105+
return self._image_cv.to_jpeg()
106+
107+
def set_image_cv(self, image):
108+
self._image_cv = image
109+
103110
def get_image_jpeg(self):
104111
return self._camera.get_image_jpeg()
105112

@@ -218,20 +225,27 @@ def get_average(self):
218225
return avg
219226

220227
def find_line(self):
221-
img = self.get_image().binarize()
228+
avg = self.get_image().get_average()
229+
img = self.get_image().binarize(int((avg[0]+avg[2])/2))
230+
img = img.erode().dilate()
222231
slices = [0,0,0]
223232
blobs = [0,0,0]
224233
slices[0] = img.crop(0, int(self._camera.out_rgb_resolution[1]/1.2), self._camera.out_rgb_resolution[0], self._camera.out_rgb_resolution[1])
225234
slices[1] = img.crop(0, int(self._camera.out_rgb_resolution[1]/1.5), self._camera.out_rgb_resolution[0], int(self._camera.out_rgb_resolution[1]/1.2))
226235
slices[2] = img.crop(0, int(self._camera.out_rgb_resolution[1]/2.0), self._camera.out_rgb_resolution[0], int(self._camera.out_rgb_resolution[1]/1.5))
236+
y_offset = [int(self._camera.out_rgb_resolution[1]/1.2),
237+
int(self._camera.out_rgb_resolution[1]/1.5),
238+
int(self._camera.out_rgb_resolution[1]/2.0)]
227239
coords = [-1, -1, -1]
228240
for idx, slice in enumerate(slices):
229-
blobs[idx] = slice.find_blobs(minsize=480/(self._cv_image_factor * self._cv_image_factor), maxsize=6400/(self._cv_image_factor * self._cv_image_factor))
241+
blobs[idx] = slice.find_blobs(minsize=2000/(self._cv_image_factor * self._cv_image_factor), maxsize=8000/(self._cv_image_factor * self._cv_image_factor))
230242
if len(blobs[idx]):
231243
coords[idx] = (blobs[idx][0].center[0] * 100) / self._camera.out_rgb_resolution[0]
232-
logging.info("line coord: " + str(idx) + " " + str(coords[idx])+ " area: " + str(blobs[idx][0].area()))
233-
234-
return coords[0]
244+
#logging.info("line coord: " + str(idx) + " " + str(coords[idx])+ " area: " + str(blobs[idx][0].area()))
245+
blob = blobs[idx][0]
246+
img.draw_rect(blob.left, y_offset[idx] + blob.top, blob.right, y_offset[idx] + blob.bottom, (0,255,0), 5)
247+
self.set_image_cv(img)
248+
return coords
235249

236250
def find_signal(self):
237251
angle = None

cnn_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def run(self):
130130
self.manager.save_model_status(self.model_name, self.architecture, 0)
131131
image_dir = self.prepare_images()
132132
logging.info("retrain")
133-
self.trainer.retrain(image_dir, MODEL_PATH + "/" + self.model_name, self.training_steps, self.learning_rate)
133+
self.trainer.retrain(image_dir, MODEL_PATH + "/" + self.model_name, self.training_steps, self.learning_rate, flip_left_right=False, random_crop=0, random_scale=0)
134134
self.manager.save_model_status(self.model_name, self.architecture, 1)
135135
self.clear_filesystem()
136136
logging.info("finish")

coderbot.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"move_tr_speed": "85", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_jpeg_bitrate": "2000000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "move_fw_speed": "100", "camera_color_object_size_max": "160000", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "cv_image_factor": "2", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "camera_path_object_size_max": "160000", "move_motor_trim": "1", "camera_path_object_size_min": "4000", "cnn_default_model": "harry_3_50", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "prog_move_mpu": "yes", "ctrl_fw_speed": "100", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "camera_framerate": "30", "move_motor_mode": "dc", "move_power_angle_1": "45", "show_page_control": "true"}
1+
{"move_tr_speed": "85", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_jpeg_bitrate": "2000000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "move_fw_speed": "100", "camera_color_object_size_max": "160000", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "cv_image_factor": "2", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "camera_path_object_size_max": "160000", "move_motor_trim": "1", "camera_path_object_size_min": "4000", "cnn_default_model": "harry_3_50", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "camera_framerate": "30", "move_motor_mode": "dc", "move_power_angle_1": "45", "show_page_control": "true"}

0 commit comments

Comments
 (0)