Skip to content

Commit 73570b5

Browse files
committed
-
1 parent 7b4ed03 commit 73570b5

File tree

9 files changed

+51
-25
lines changed

9 files changed

+51
-25
lines changed

camera.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,13 @@ def find_text(self, accept, back_color):
323323
text = bin_image.find_text(accept)
324324
return text
325325

326+
def find_code(self):
327+
self._image_lock.acquire()
328+
img = self.get_image(0)
329+
self._image_lock.release()
330+
return img.grayscale().find_code()
331+
332+
326333
def sleep(self, elapse):
327334
logging.debug("sleep: " + str(elapse))
328335
time.sleep(elapse)

coderbot.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"move_tr_speed": "80", "move_fw_elapse": "1", "camera_path_object_size_min": "4000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "camera_color_object_size_min": "4000", "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": "4", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "20", "move_power_angle_3": "20", "move_power_angle_1": "15", "move_motor_trim": "0.9", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_refresh_timeout": "0.1", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "move_motor_mode": "dc", "camera_path_object_size_max": "160000", "show_page_control": "true"}
1+
{"move_tr_speed": "80", "move_fw_elapse": "1", "camera_path_object_size_min": "4000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "camera_color_object_size_min": "4000", "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": "20", "move_power_angle_3": "20", "move_power_angle_1": "15", "move_motor_trim": "0.9", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_refresh_timeout": "0.1", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "move_motor_mode": "dc", "camera_path_object_size_max": "160000", "show_page_control": "true"}

data/program_find_code_test.data

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"dom_code": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"controls_whileUntil\" x=\"9\" y=\"103\"><field name=\"MODE\">WHILE</field><value name=\"BOOL\"><block type=\"logic_boolean\"><field name=\"BOOL\">TRUE</field></block></value><statement name=\"DO\"><block type=\"text_print\"><value name=\"TEXT\"><block type=\"coderbot_adv_findCode\"></block></value></block></statement></block></xml>", "code": "while True:\n get_prog_eng().check_end()\n get_cam().set_text(get_cam().find_code())\n", "name": "find_code_test"}

static/js/blockly/blocks.js

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -545,27 +545,6 @@ Blockly.Python['coderbot_adv_findFace'] = function(block) {
545545
return [code, Blockly.Python.ORDER_ATOMIC];
546546
};
547547

548-
Blockly.Blocks['coderbot_adv_findCode'] = {
549-
/**
550-
* Block for findSignal function.
551-
* @this Blockly.Block
552-
*/
553-
init: function() {
554-
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
555-
this.setColour(290);
556-
this.appendDummyInput()
557-
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDCODE);
558-
this.setOutput(true, 'Number');
559-
this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP);
560-
}
561-
};
562-
563-
Blockly.Python['coderbot_adv_findCode'] = function(block) {
564-
// Boolean values true and false.
565-
var code = 'get_cam().find_code()';
566-
return [code, Blockly.Python.ORDER_ATOMIC];
567-
};
568-
569548
Blockly.Blocks['coderbot_adv_findColor'] = {
570549
/**
571550
* Block for findSignal function.
@@ -626,6 +605,28 @@ Blockly.Python['coderbot_adv_findText'] = function(block) {
626605
return [code, Blockly.Python.ORDER_ATOMIC];
627606
};
628607

608+
Blockly.Blocks['coderbot_adv_findCode'] = {
609+
/**
610+
* Block for findText function.
611+
* @this Blockly.Block
612+
*/
613+
init: function() {
614+
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
615+
this.setColour(290);
616+
this.appendDummyInput()
617+
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDCODE);
618+
this.setOutput(true, 'String');
619+
this.setInputsInline(true);
620+
this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP);
621+
}
622+
};
623+
624+
Blockly.Python['coderbot_adv_findCode'] = function(block) {
625+
// Boolean values true and false.
626+
var code = 'get_cam().find_code()';
627+
return [code, Blockly.Python.ORDER_ATOMIC];
628+
};
629+
629630
Blockly.Blocks['coderbot_adv_findLogo'] = {
630631
/**
631632
* Block for findLogo function.

static/js/blockly/bot_en.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ Blockly.Msg.CODERBOT_SENSOR_PATHAHEAD = "path ahead";
3535
Blockly.Msg.CODERBOT_SENSOR_FINDLINE = "find line";
3636
Blockly.Msg.CODERBOT_SENSOR_FINDFACE = "find face";
3737
Blockly.Msg.CODERBOT_SENSOR_FINDSIGNAL = "find signal";
38-
Blockly.Msg.CODERBOT_SENSOR_FINDCODE = "find code";
3938
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_FIND = "find";
4039
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_COLOR = "from color";
4140
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_DIST = "distance";
@@ -52,6 +51,7 @@ Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_NUM = "Numeric (0..9)";
5251
Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHANUM = "Alphanumeric (A..Z;0..9)";
5352
Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC = "Any";
5453
Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_COLOR = "background color";
54+
Blockly.Msg.CODERBOT_SENSOR_FINDCODE = "read Bar-QRCode";
5555
Blockly.Msg.CODERBOT_AUDIO_RECORD_FILE_NAME = "record as file";
5656
Blockly.Msg.CODERBOT_AUDIO_RECORD_FILE_ELAPSE = " of seconds";
5757
Blockly.Msg.CODERBOT_AUDIO_PLAY_FILE = "play file";

static/js/blockly/bot_fr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ Blockly.Msg.CODERBOT_SENSOR_PATHAHEAD = "chemin devant";
3535
Blockly.Msg.CODERBOT_SENSOR_FINDLINE = "trouve la ligne";
3636
Blockly.Msg.CODERBOT_SENSOR_FINDFACE = "trouve un visage";
3737
Blockly.Msg.CODERBOT_SENSOR_FINDSIGNAL = "trouve un signal";
38-
Blockly.Msg.CODERBOT_SENSOR_FINDCODE = "trouve un code";
3938
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_FIND = "trouve";
4039
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_COLOR = "de cette couleur";
4140
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_DIST = "la distance";
@@ -46,3 +45,4 @@ Blockly.Msg.CODERBOT_SENSOR_FINDFACE_Y = "ordonnée";
4645
Blockly.Msg.CODERBOT_SENSOR_FINDFACE_SIZE = "taille";
4746
Blockly.Msg.CODERBOT_SENSOR_FINDFACE_ALL = "x, y, taille (sous forme de liste)";
4847
Blockly.Msg.CODERBOT_SENSOR_FINDLOGO = "trouve le logo";
48+
Blockly.Msg.CODERBOT_SENSOR_FINDCODE = "trouve le Bar/QRCode";

static/js/blockly/bot_it.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ Blockly.Msg.CODERBOT_SENSOR_PATHAHEAD = "spazio libero";
3535
Blockly.Msg.CODERBOT_SENSOR_FINDLINE = "trova linea";
3636
Blockly.Msg.CODERBOT_SENSOR_FINDFACE = "trova faccia";
3737
Blockly.Msg.CODERBOT_SENSOR_FINDSIGNAL = "trova segnale";
38-
Blockly.Msg.CODERBOT_SENSOR_FINDCODE = "trova codice";
3938
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_FIND = "trova";
4039
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_COLOR = "da colore";
4140
Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_DIST = "distanza";
@@ -52,6 +51,7 @@ Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_NUM = "Numeri (0..9)";
5251
Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHANUM = "Lettere e numeri (A..Z;0..9)";
5352
Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_UNSPEC = "Qualsiasi";
5453
Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_COLOR = "colore sfondo";
54+
Blockly.Msg.CODERBOT_SENSOR_FINDCODE = "leggi Bar/QRCode";
5555
Blockly.Msg.CODERBOT_AUDIO_RECORD_FILE_NAME = "registra audio su file";
5656
Blockly.Msg.CODERBOT_AUDIO_RECORD_FILE_ELAPSE = " per secondi";
5757
Blockly.Msg.CODERBOT_AUDIO_PLAY_FILE = "riproduci file";

templates/blocks_adv.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@
248248
</block>
249249
</value>
250250
</block>
251+
<block type="coderbot_adv_findCode"></block>
251252
<block type="coderbot_sonar_get_distance"></block>
252253
</category>
253254
<category name="{% trans %}Sound{% endtrans %}" colour="290">

viz/image.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@
3838

3939
MIN_MATCH_COUNT = 10
4040

41+
try:
42+
import zbar
43+
code_scanner = zbar.ImageScanner()
44+
except:
45+
logging.info("zbar not availabe")
46+
4147
class Image():
4248
r_from = np.float32([[0, 0], [640, 0], [640, 480], [0, 480]])
4349
r_dest = np.float32([[0, -120], [640, -120], [380, 480], [260, 480]])
@@ -231,6 +237,16 @@ def find_text(self, accept):
231237
logging.info("time: " + str(time.time() - t) + " text: " +str(text))
232238
return text
233239

240+
def find_code(self):
241+
text_found = None
242+
img_size = self._data.shape
243+
image_code = zbar.Image(img_size[1], img_size[0], "Y800", self._data.tostring())
244+
code_num = code_scanner.scan(image_code)
245+
for symbol in image_code:
246+
text_found = symbol.data
247+
break
248+
return text_found
249+
234250
def to_jpeg(self):
235251
ret, jpeg_array = cv2.imencode('.jpeg', self._data)
236252
return np.array(jpeg_array).tostring()

0 commit comments

Comments
 (0)