差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
wm_wiki:imagerecognition_sensor:manual [2019/07/17 18:37] juneral [3.3. 文本代码编程指南] |
wm_wiki:imagerecognition_sensor:manual [2020/05/12 15:34] (当前版本) juneral [3.2. 功能模块及WeeeCode图形化编程指南] |
||
---|---|---|---|
行 7: | 行 7: | ||
16.0pt;font-family:宋体;color:#222222;background:white'>本图像识别传感器是一款体积小巧,功耗低的初级视觉识别传感器。内置识别程序,所有识别算法都在本地处理,无须联网。具有颜色识别、大小识别、人脸跟踪、形状模糊识别等作用,可以用于跟踪小球、人脸,辨别方位距离,巡线,无人驾驶,自动分拣机等案例。用户可以自由输入想要识别的颜色信息,通过自有的单总线协议,可以和平台任何</span><span | 16.0pt;font-family:宋体;color:#222222;background:white'>本图像识别传感器是一款体积小巧,功耗低的初级视觉识别传感器。内置识别程序,所有识别算法都在本地处理,无须联网。具有颜色识别、大小识别、人脸跟踪、形状模糊识别等作用,可以用于跟踪小球、人脸,辨别方位距离,巡线,无人驾驶,自动分拣机等案例。用户可以自由输入想要识别的颜色信息,通过自有的单总线协议,可以和平台任何</span><span | ||
style='font-size:16.0pt;font-family:宋体;color:#222222;background:white'>Arduino<span | style='font-size:16.0pt;font-family:宋体;color:#222222;background:white'>Arduino<span | ||
- | lang=ZH-CN>、</span>micro:bit<span lang=ZH-CN>等主控板通讯,可用</span>scratch<span | + | lang=ZH-CN>、</span>micro:bit<span lang=ZH-CN>等主控板通讯,可用</span><b>Scratch<span |
- | lang=ZH-CN>、</span>Python<span lang=ZH-CN>、</span>Arduino C++<span lang=ZH-CN>等编程,方便快捷。</span></span></p> | + | lang=ZH-CN>、</span>Python<span lang=ZH-CN>、</span>Arduino C++</b><span |
+ | lang=ZH-CN>等编程,方便快捷。</span></span></p> | ||
</body></html> | </body></html> | ||
行 88: | 行 89: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
- | <td width=238 valign=center style='width:178.5pt;border:solid white 1.0pt; | + | <td width=238 style='width:178.5pt;border:solid white 1.0pt;border-left:solid #5B9BD5 3.0pt; |
- | border-left:solid #5B9BD5 3.0pt;background:#5B9BD5;padding:0in 5.4pt 0in 5.4pt'> | + | background:#5B9BD5;padding:0in 5.4pt 0in 5.4pt'> |
<p class=MsoNormal align=center style='text-align:center'><b><span | <p class=MsoNormal align=center style='text-align:center'><b><span | ||
lang=ZH-CN style='font-size:18.0pt;font-family:宋体;color:white'>摄像头</span></b></p> | lang=ZH-CN style='font-size:18.0pt;font-family:宋体;color:white'>摄像头</span></b></p> | ||
行 103: | 行 104: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
- | <td width=238 valign=center style='width:178.5pt;border-top:none;border-left: | + | <td width=238 style='width:178.5pt;border-top:none;border-left:solid #5B9BD5 3.0pt; |
- | solid #5B9BD5 3.0pt;border-bottom:solid white 1.0pt;border-right:solid white 1.0pt; | + | border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;background: |
- | background:#5B9BD5;padding:0in 5.4pt 0in 5.4pt'> | + | #5B9BD5;padding:0in 5.4pt 0in 5.4pt'> |
<p class=MsoNormal align=center style='text-align:center'><b><span | <p class=MsoNormal align=center style='text-align:center'><b><span | ||
lang=ZH-CN style='font-size:18.0pt;font-family:宋体;color:white'>状态指示灯</span></b></p> | lang=ZH-CN style='font-size:18.0pt;font-family:宋体;color:white'>状态指示灯</span></b></p> | ||
行 117: | 行 118: | ||
lang=ZH-CN>灯闪烁</span>,<span lang=ZH-CN>识别一次</span>,<span lang=ZH-CN>闪烁一次</span>,<span | lang=ZH-CN>灯闪烁</span>,<span lang=ZH-CN>识别一次</span>,<span lang=ZH-CN>闪烁一次</span>,<span | ||
lang=ZH-CN>不工作时熄灭</span></span></p> | lang=ZH-CN>不工作时熄灭</span></span></p> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td width=238 style='width:178.5pt;border-top:none;border-left:solid #5B9BD5 3.0pt; | ||
+ | border-bottom:solid white 1.0pt;border-right:solid white 1.0pt;background: | ||
+ | #5B9BD5;padding:0in 5.4pt 0in 5.4pt'> | ||
+ | <p class=MsoNormal align=center style='text-align:center'><b><span | ||
+ | lang=ZH-CN style='font-size:18.0pt;font-family:宋体;color:white'>复位按键</span></b></p> | ||
+ | </td> | ||
+ | <td width=552 valign=top style='width:5.75in;border-top:none;border-left: | ||
+ | none;border-bottom:solid white 1.0pt;border-right:solid #5B9BD5 3.0pt; | ||
+ | background:#5B9BD5;padding:0in 5.4pt 0in 5.4pt'> | ||
+ | <p class=MsoNormal align=center style='text-align:center'><span lang=ZH-CN | ||
+ | style='font-size:18.0pt;font-family:宋体;color:white'>当模块工作不正常时,可短按复位处理器</span></p> | ||
</td> | </td> | ||
</tr> | </tr> | ||
行 251: | 行 266: | ||
padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | ||
<p class=MsoNormal align=center style='text-align:center'><img width=520 | <p class=MsoNormal align=center style='text-align:center'><img width=520 | ||
- | height=122 id="图片 8" src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181503.png"></p> | + | height=122 id="图片 8" src="lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181503.png"></p> |
</td> | </td> | ||
</tr> | </tr> | ||
行 272: | 行 287: | ||
padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | ||
<p class=MsoNormal align=center style='text-align:center'><img width=640 | <p class=MsoNormal align=center style='text-align:center'><img width=640 | ||
- | height=126 id="图片 9" src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181512.png"></p> | + | height=126 id="图片 9" src="lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181512.png"></p> |
</td> | </td> | ||
</tr> | </tr> | ||
行 292: | 行 307: | ||
<p class=MsoNormal> </p> | <p class=MsoNormal> </p> | ||
<p class=MsoNormal align=center style='text-align:center'><img width=456 | <p class=MsoNormal align=center style='text-align:center'><img width=456 | ||
- | height=50 id="图片 10" src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181526.png"></p> | + | height=50 id="图片 10" src="lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181526.png"></p> |
<p class=MsoNormal> </p> | <p class=MsoNormal> </p> | ||
</td> | </td> | ||
行 314: | 行 329: | ||
padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | ||
<p class=MsoNormal align=center style='text-align:center'><img width=636 | <p class=MsoNormal align=center style='text-align:center'><img width=636 | ||
- | height=199 id="图片 11" src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181539.png"></p> | + | height=199 id="图片 11" src="lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181539.png"></p> |
</td> | </td> | ||
</tr> | </tr> | ||
行 335: | 行 350: | ||
padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | padding:0in 5.4pt 0in 5.4pt;height:79.55pt'> | ||
<p class=MsoNormal align=center style='text-align:center'><img width=510 | <p class=MsoNormal align=center style='text-align:center'><img width=510 | ||
- | height=153 id="图片 12" src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181553.png"></p> | + | height=153 id="图片 12" src="lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-181553.png"></p> |
</td> | </td> | ||
</tr> | </tr> | ||
行 360: | 行 375: | ||
<p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
- | text-indent:.5in;background:white'><span style='font-size:16.0pt;font-family: | + | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: |
- | 宋体;color:#222222'>Arduino-C/C++ API<span lang=ZH-CN>:</span><b><a | + | 宋体;color:#222222'>Arduino <span lang=ZH-CN>函数库介绍:</span></span></b></p> |
- | href="https://www.weeemake.com.cn/wiki/doku.php?id=wm_wiki:micropython:api_document"><span | + | |
- | lang=ZH-CN style='color:#008CBA'>查看相关</span><span style='color:#008CBA'>API</span></a></b></span></p> | + | |
- | <p class=MsoNormal><span style='font-size:16.0pt;font-family:宋体;color:#222222; | + | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; |
- | background:white'> </span></p> | + | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: |
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool getLab(void)</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——反馈摄像头前面的</span><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>LAB<span | ||
+ | lang=ZH-CN>值。更新后数据为</span>minL, maxL, minA, maxA, minB, maxB<span lang=ZH-CN>,分别为</span>3<span | ||
+ | lang=ZH-CN>个分量的最大和最小值。此模式具有自动捕捉功能,只有当摄像头中心区域内物体颜色基本一致时,才会锁定输出。用户可以根据反馈的</span>LAB<span | ||
+ | lang=ZH-CN>范围做适当修改,以满足不同环境下的识别。</span></span></p> | ||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>void | ||
+ | setAutoTrackingMode(void)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——设置自动获取模式。此模式为先寻找摄像头前中心区域目标物体信息,当目标中心区域颜色基本一致时,锁定,随后跟踪此物体。此模式类似于小狗拾物的方式,先在眼前放置物体,然后寻找,程序简单,控制方便。</span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool | ||
+ | getAutoPosition(void)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——获取自动模式下的物体信息。此函数需在</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>setAutoTrackingMode<span lang=ZH-CN>模式下运行,用于获取目标物体在摄像头前的</span>X<span | ||
+ | lang=ZH-CN>、</span>Y<span lang=ZH-CN>坐标位置以及像素大小。当摄像头捕捉到目标物体后返回</span>1<span | ||
+ | lang=ZH-CN>,没有捕捉到返回</span>0<span lang=ZH-CN>。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool | ||
+ | getColorPosition(uint8_t mun)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——获取内置颜色</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>mun<span lang=ZH-CN>的物体信息。此函数是捕捉内置</span>5<span lang=ZH-CN>种颜色中的一种,是否出现在摄像头前。</span>Mun<span | ||
+ | lang=ZH-CN>填写</span>1-5<span lang=ZH-CN>,分别对应</span>1-<span lang=ZH-CN>红、</span>2-<span | ||
+ | lang=ZH-CN>黄、</span>3-<span lang=ZH-CN>蓝、</span>4-<span lang=ZH-CN>草绿、</span>5-<span | ||
+ | lang=ZH-CN>深绿。当摄像头捕捉到目标物体后返回</span>1<span lang=ZH-CN>,没有捕捉到返回</span>0<span | ||
+ | lang=ZH-CN>。当返回</span>1<span lang=ZH-CN>时,会更新物体的</span>X<span lang=ZH-CN>、</span>Y<span | ||
+ | lang=ZH-CN>坐标位置以及像素大小。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>void setLabColor1(int8_t | ||
+ | minL, int8_t maxL, int8_t minA, int8_t maxA, int8_t minB, int8_t maxB)</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——设置用户指定的颜色信息。采用</span><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>LAB<span | ||
+ | lang=ZH-CN>色域,</span>6<span lang=ZH-CN>个值代表一个范围。范围越宽,越容易识别,环境适应性越好,但误判的可能性也提高了。此函数为设置编号</span>1<span | ||
+ | lang=ZH-CN>的颜色信息,同理,有</span>setLabColor2<span lang=ZH-CN>、</span>setLabColor3<span | ||
+ | lang=ZH-CN>、</span>setLabColor4<span lang=ZH-CN>分 别对应</span>2<span lang=ZH-CN>、</span>3<span | ||
+ | lang=ZH-CN>、</span>4<span lang=ZH-CN>的颜色信息。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool getAppColorPosition(uint8_t | ||
+ | mun)</span></b><span lang=ZH-CN style='font-size:16.0pt;font-family:宋体; | ||
+ | color:black;letter-spacing:-.5pt;background:white'>——获取用户指定颜色</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>mun<span lang=ZH-CN>的物体信息。此函数是捕捉用户自定义的颜色,</span>Mun<span | ||
+ | lang=ZH-CN>填写</span>1-4<span lang=ZH-CN>,对应</span>setLabColorX<span lang=ZH-CN>中的</span>X<span | ||
+ | lang=ZH-CN>序号。当摄像头捕捉到目标物体后返回</span>1<span lang=ZH-CN>,没有捕捉到返回</span>0<span | ||
+ | lang=ZH-CN>。当返回</span>1<span lang=ZH-CN>时,会更新物体的</span>X<span lang=ZH-CN>、</span> | ||
+ | Y<span lang=ZH-CN>坐标位置以及像素大小。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>void | ||
+ | setLineFollowerMode(void)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——设置巡线模式。此模式下,摄像头会获取</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>160*120<span lang=ZH-CN>像素大小灰度信息,用于分别黑线还白线。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>void setLineFollowerThreshold(uint8_t | ||
+ | min,uint8_t max)</span></b><span lang=ZH-CN style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>——设置需要捕捉线条的灰度阈值。如果背景是白色,线是黑色,一般取值</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>[0<span lang=ZH-CN>,</span>100]<span lang=ZH-CN>,取值最小为</span>0<span | ||
+ | lang=ZH-CN>,最大为</span>255<span lang=ZH-CN>,纯黑为</span>0<span lang=ZH-CN>,纯白为</span>255<span | ||
+ | lang=ZH-CN>。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool | ||
+ | getLineFollowerAngle(void)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——获取巡线角度信息。获取的角度信息是一个正负角度值,根据这个值控制小车左右转,这个值在±</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>53<span lang=ZH-CN>°以内。当摄像头捕捉到线条后返回</span>1<span lang=ZH-CN>,没有捕捉到返回</span>0<span | ||
+ | lang=ZH-CN>。注意此函数需要在</span>setLineFollowerMode<span lang=ZH-CN>函数下使用。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool | ||
+ | getLineFollowerAxis(void)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——获取巡线区域信息。此函数会更新</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>5<span lang=ZH-CN>个值,代表摄像头前从远到近依次排列的</span>5<span lang=ZH-CN>个区域的中心</span>X<span | ||
+ | lang=ZH-CN>坐标值,这</span>5<span lang=ZH-CN>个区域代表黑线线条区域。当摄像头捕捉到线条后返回</span>1<span | ||
+ | lang=ZH-CN>,没有捕捉到返回</span>0<span lang=ZH-CN>。注意此函数需要在</span>setLineFollowerMode<span | ||
+ | lang=ZH-CN>函数下使用。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>void | ||
+ | setPixelsThreshold(uint8_t mun)</span></b><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——设置识别物体最小像素数。当识别物体的像素数量超过</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>mun<span lang=ZH-CN>时,才会收到反馈信息,否则就当没有识别。此函数可以用于过滤干扰,或者识别较大物体。默认为</span>10<span | ||
+ | lang=ZH-CN>。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool | ||
+ | getColorAllPosition(uint8_t mun)</span></b><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——获取内置颜色</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>mun<span lang=ZH-CN>物体的所有信息。与</span>getColorPosition<span | ||
+ | lang=ZH-CN>类似,但信息更多,共包括</span>centerX<span lang=ZH-CN>、</span>centerY<span | ||
+ | lang=ZH-CN>、</span>pixels<span lang=ZH-CN>、</span>frameX<span lang=ZH-CN>、</span>frameY<span | ||
+ | lang=ZH-CN>、</span> high<span lang=ZH-CN>、</span>width<span lang=ZH-CN>、</span>rotation<span | ||
+ | lang=ZH-CN>等</span>8<span lang=ZH-CN>个信息,分别代表物体中心</span>X<span lang=ZH-CN>坐标、中心</span>Y<span | ||
+ | lang=ZH-CN>坐标、像素个数、物体边框</span>X<span lang=ZH-CN>坐标、边框</span>Y<span lang=ZH-CN>坐标、边框高度、边框宽度、物体旋转角度。由于数据较多,所有识别速率较</span>getColorPosition<span | ||
+ | lang=ZH-CN>慢。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool | ||
+ | getAppColorAllPosition(uint8_t mun)</span></b><span lang=ZH-CN | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>——获取用户指定颜色</span><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>mun<span lang=ZH-CN>物体的所有信息。与</span>getAppColorPosition<span | ||
+ | lang=ZH-CN>类似,但信息更多,共包括</span>centerX<span lang=ZH-CN>、</span>centerY<span | ||
+ | lang=ZH-CN>、</span>pixels<span lang=ZH-CN>、</span>frameX<span lang=ZH-CN>、</span>frameY<span | ||
+ | lang=ZH-CN>、</span>high<span lang=ZH-CN>、</span>width<span lang=ZH-CN>、</span>rotation<span | ||
+ | lang=ZH-CN>等</span>8<span lang=ZH-CN>个信息,分别代表物体中心</span>X<span lang=ZH-CN>坐标、中心</span>Y<span | ||
+ | lang=ZH-CN>坐标、像素个数、物体边框</span>X<span lang=ZH-CN>坐标、边框</span>Y<span lang=ZH-CN>坐标、边框高度、边框宽度、物体旋转角 | ||
+ | 度。由于数据较多,所有识别速率较</span>getAppColorPosition<span lang=ZH-CN>慢。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>void | ||
+ | resetColorMode(uint8_t time)</span></b><span lang=ZH-CN style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>——重新初始化物体识别(非巡线)。参数</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>time<span lang=ZH-CN>为曝光时间,时间越短,拾取图像越黑,适合高亮度环境,时间越长,拾取图像越亮,适合较暗的环境。</span>Time<span | ||
+ | lang=ZH-CN>单位为毫秒,默认</span>2000<span lang=ZH-CN>,适合较暗的环境。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal align=left style='margin-bottom:7.9pt;text-align:left; | ||
+ | text-indent:.5in;background:white'><b><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>bool getFacePositon(void)</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——获取人脸位置信息。当摄像头捕捉到人脸后返回</span><span style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>1<span | ||
+ | lang=ZH-CN>,没有捕捉到返回</span>0<span lang=ZH-CN>。当返回</span>1<span lang=ZH-CN>时,会更新人脸中心点的</span>X<span | ||
+ | lang=ZH-CN>、</span>Y<span lang=ZH-CN>坐标值。</span></span></p> | ||
</body></html> | </body></html> | ||
行 399: | 行 564: | ||
lang=ZH-CN>取值为</span>[-128<span lang=ZH-CN>,</span>+128]</b><span lang=ZH-CN>。</span></span></p> | lang=ZH-CN>取值为</span>[-128<span lang=ZH-CN>,</span>+128]</b><span lang=ZH-CN>。</span></span></p> | ||
- | <p class=MsoNormal> </p> | + | </body></html> |
+ | |||
+ | ==== 4.2. 曝光时间 ==== | ||
+ | <html><body> | ||
+ | <p class=MsoTitle style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;background:white'>下面是在同一环境中不同曝光时间后的画面,可以看出在</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;background:white'>time=1000<span | ||
+ | lang=ZH-CN>时比</span>2000<span lang=ZH-CN>时暗不少。图</span>1<span lang=ZH-CN>、图</span>2<span | ||
+ | lang=ZH-CN>是在室内夜间拍摄,图</span>3<span lang=ZH-CN>是在白天室内拍摄。可以看出不同条件下,曝光时间对识别的效果影响还是很大的。注意调整曝光时间,能更好的识别目标。</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle align=center style='text-align:center;text-indent:.5in'><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;background:white'>   | ||
+ | </span><img border=0 width=156 height=115 id="图片 13" | ||
+ | src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-185321.png"><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;background:white'>     </span><img | ||
+ | border=0 width=154 height=115 id="图片 14" | ||
+ | src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-185331.png"><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;background:white'>     </span><img | ||
+ | border=0 width=153 height=115 id="图片 15" | ||
+ | src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-185338.png"></p> | ||
+ | |||
+ | <p class=MsoTitle align=center style='text-align:center;text-indent:.5in'><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;background:white'>   </span><b><span | ||
+ | lang=ZH-CN style='font-size:14.0pt;font-family:宋体;color:black;background:white'>图</span></b><b><span | ||
+ | style='font-size:14.0pt;font-family:宋体;color:black;background:white'>1  | ||
+ | Time=2000        <span lang=ZH-CN>图</span>2  | ||
+ | Time=1000         <span lang=ZH-CN>图</span>3  | ||
+ | Time=2000</span></b></p> | ||
+ | |||
+ | <p class=MsoTitle style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;background:white'>图</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;background:white'>1<span | ||
+ | lang=ZH-CN>红色小球位置的</span>LAB<span lang=ZH-CN>数值</span><b>[60,72,54,66,-20,-8]</b><span | ||
+ | lang=ZH-CN>,图</span>2<span lang=ZH-CN>的</span>LAB<span lang=ZH-CN>数值</span><b>[45,58,66,74,-24,0]</b><span | ||
+ | lang=ZH-CN>,图</span>3<span lang=ZH-CN>的</span>LAB<span lang=ZH-CN>数值</span><b>[71,95,8,60,-37,-7]</b><span | ||
+ | lang=ZH-CN>,可以看出不同环境下的</span>LAB<span lang=ZH-CN>值差别还是比较大的。</span></span></p> | ||
+ | </body></html> | ||
+ | |||
+ | ==== 4.3. 颜色反馈值的含义 ==== | ||
+ | <html><body> | ||
+ | <p class=MsoNormal style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>如下图为识别到一个橘红色圆</span></p> | ||
+ | |||
+ | <p class=MsoNormal align=center style='text-align:center'><img border=0 | ||
+ | width=700 height=352 id="图片 16" | ||
+ | src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-185429.png"></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>centerX</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——识别色块中心点的</span><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>X<span | ||
+ | lang=ZH-CN>坐标,这个中心点不一定是外框的二分之一处,当识别到的物体不是圆时,这个点就会偏重心方向。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>centerY</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——识别色块中心点的</span><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>Y<span | ||
+ | lang=ZH-CN>坐标。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>Pixels</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——色块像素点数量,也就是这个橘红色的圆占了多少个像素。</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>     </span></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>frameX</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——外框的</span><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>X<span lang=ZH-CN>坐标,这个外框会包含这个色块所有的像素。如果这个圆有一个角,那么这个外框也将包含这个角。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>frameY</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——外框的</span><span style='font-size:16.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>Y<span lang=ZH-CN>坐标。</span></span></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>High</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——外框的高度</span></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>Width</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——外框的宽度</span></p> | ||
+ | |||
+ | <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:16.0pt; | ||
+ | font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>Rotation</span></b><span | ||
+ | lang=ZH-CN style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing: | ||
+ | -.5pt;background:white'>——物体旋转角度,此值是色块的旋转(<b>单位:弧度</b>)。如果色块类似铅笔或钢笔,那么这个值就是介于</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>0-180<span lang=ZH-CN>之间的唯一值。 如果这个色块圆的,那么这个值就没有效用。如果这个色块完全不具有对称性,您只能由此得到</span>0-360<span | ||
+ | lang=ZH-CN>度的旋转。范围</span>X[0,320]<span lang=ZH-CN>,</span>Y[0,240]</span></p> | ||
+ | </body></html> | ||
+ | |||
+ | ==== 4.4. 巡线 ==== | ||
+ | <html><body> | ||
+ | <p class=MsoNormal style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>本模块有</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>2<span lang=ZH-CN>种巡线方式,第一种直接给出角度值,范围从</span>-53<span | ||
+ | lang=ZH-CN>°到</span>53<span lang=ZH-CN>°,用户可以根据这个角度来控制小车转动。第二种是给出</span>5<span | ||
+ | lang=ZH-CN>个值,如下图所示,在灰度图上,等分</span>5<span lang=ZH-CN>个区域,每个区域会寻找黑线的中心点,返回这</span>5<span | ||
+ | lang=ZH-CN>个中心点的</span>X<span lang=ZH-CN>坐标值,从</span>linex1<span lang=ZH-CN>到</span>linex5<span | ||
+ | lang=ZH-CN>分别代表从上到下的</span>5<span lang=ZH-CN>个点,也就是从远到近。根据这些值就可以判断地图上是直线还是曲线,车的姿态是否一致,可以写一个加权公式,来判断是否需要转弯,转弯大小如何。通过设置</span>setLineFollowerThreshold<span | ||
+ | lang=ZH-CN>函数里阈值的大小,就可以改变黑线的识别灰度值,满足不同颜色的巡线地图需求。范围</span></span><b><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:red;letter-spacing:-.5pt; | ||
+ | background:white'>X[0,160]<span lang=ZH-CN>,</span>Y[0,120]</span></b></p> | ||
+ | |||
+ | <p class=MsoNormal align=center style='text-align:center'><img border=0 | ||
+ | width=159 height=120 id="图片 17" | ||
+ | src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-185459.png"><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>           </span><img | ||
+ | border=0 width=159 height=119 id="图片 18" | ||
+ | src="https://www.weeemake.com.cn/wiki/lib/exe/fetch.php?media=wm_wiki:imagerecognition_sensor:pasted:20190717-185507.png"></p> | ||
+ | |||
+ | <p class=MsoNormal align=center style='text-align:center'><b><span lang=ZH-CN | ||
+ | style='font-size:14.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>图</span></b><b><span style='font-size:14.0pt;font-family: | ||
+ | 宋体;color:black;letter-spacing:-.5pt;background:white'>1 <span lang=ZH-CN>直线</span>                  | ||
+ |    <span lang=ZH-CN>图</span>2 <span lang=ZH-CN>左转弯</span></span></b></p> | ||
+ | |||
+ | <p class=MsoNormal style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt;background:white'>本模式下可以制作视觉识别巡线小车或者模拟无人驾驶小车,需要注意的是,图像识别用于巡线的速度是不快的,最快</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体;color:black;letter-spacing:-.5pt; | ||
+ | background:white'>50ms<span lang=ZH-CN>判断一次,所以和传统的巡线传感器相比,在速度上不具有优势。根据地图适当调整摄像头与地面的夹角以及和地面的高度,能更好的巡线。</span></span></p> | ||
+ | </body></html> | ||
+ | |||
+ | ===== 5. 技巧提升 ===== | ||
+ | |||
+ | <html><body> | ||
+ | <p class=MsoTitle style='margin-left:0in;text-indent:0in'><b><span | ||
+ | style='font-size:16.0pt;font-family:宋体'>1、</span></b><b><span lang=ZH-CN | ||
+ | style='font-size:16.0pt;font-family:宋体'>标定视野范围</span></b></p> | ||
+ | |||
+ | <p class=MsoTitle style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体'>由于本模块不具有输出图像和视频的功能,所有在实际应用时,不知道摄像头的视野范围,不方便调试,这时需要对视野进行测定。测定的方法可以是用预定颜色的小球,从</span><span | ||
+ | style='font-size:16.0pt;font-family:宋体'>4<span lang=ZH-CN>个角落慢慢靠近中心,当在边缘位置小球被捕获,有数据输出后,即为视界边界。调整好合适的视野后,固定摄像头,这样就方便以后进一步的调试了。</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle style='margin-left:0in;text-indent:0in'><b><span | ||
+ | style='font-size:16.0pt;font-family:宋体'>2、</span></b><b><span lang=ZH-CN | ||
+ | style='font-size:16.0pt;font-family:宋体'>同种颜色最多识别</span></b><b><span | ||
+ | style='font-size:16.0pt;font-family:宋体'>2<span lang=ZH-CN>个</span></span></b></p> | ||
+ | |||
+ | <p class=MsoTitle style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体'>在摄像头范围内,同种颜色同时识别最多</span><span style='font-size:16.0pt; | ||
+ | font-family:宋体'>2<span lang=ZH-CN>个物体。如果有背景有很多零碎的颜色干扰,可以设置</span>setPixelsThreshold<span | ||
+ | lang=ZH-CN>识别物体最小像素数,这样就可以直接滤除一些小的色块干扰。</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle style='margin-left:0in;text-indent:0in'><b><span | ||
+ | style='font-size:16.0pt;font-family:宋体'>3、</span></b><b><span lang=ZH-CN | ||
+ | style='font-size:16.0pt;font-family:宋体'>人脸识别</span></b></p> | ||
+ | |||
+ | <p class=MsoTitle style='text-indent:.5in'><span lang=ZH-CN style='font-size: | ||
+ | 16.0pt;font-family:宋体'>人脸识别采用的是</span><span style='font-size:16.0pt;font-family: | ||
+ | 宋体'>240*160<span lang=ZH-CN>大小的灰度图,所以人脸距离摄像头</span>20cm<span lang=ZH-CN>以上跟踪效果比较好。模块能只能同时识别</span>1<span | ||
+ | lang=ZH-CN>张人脸,人脸需要正对摄像头,侧着脸,或者歪着头都会影响识别效果,本算法仅支持整张脸的识别,不支持半张或者部分脸的识别。识别最快</span>70ms<span | ||
+ | lang=ZH-CN>一次。</span></span></p> | ||
+ | |||
+ | |||
+ | </body></html> | ||
+ | |||
+ | ===== 6. 注意事项 ===== | ||
+ | |||
+ | <html><body> | ||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>1<span | ||
+ | lang=ZH-CN>、环境的变化对图像检测的结果将产生不同影响,使用时应尽量注意:</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>  a<span | ||
+ | lang=ZH-CN>、避免在过暗、过亮、强逆光的环境下使用; </span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>  b<span | ||
+ | lang=ZH-CN>、避免让灯光或强烈阳光直射目标物体,避免造成物体反光; </span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>  c<span | ||
+ | lang=ZH-CN>、避免在彩色灯光或可变换的灯光下使用,稳定均匀的白色是最好的光源; </span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>  d<span | ||
+ | lang=ZH-CN>、避免正对光源使用; </span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>  e<span | ||
+ | lang=ZH-CN>、尽量避免在背景图案复杂的情况下使用,或者目标物体和背景颜色相近; </span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>2<span | ||
+ | lang=ZH-CN>、开机时间。本模块从上电到开始接收指令是需要一定时间的,这个时间大概是</span>3s<span lang=ZH-CN>左右,所以主程序上电设置摄像头参数时需要延迟</span>3s<span | ||
+ | lang=ZH-CN>以上,确保摄像头模块进入工作状态,或者上电后复位主控芯片。</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>3<span | ||
+ | lang=ZH-CN>、图像识别模块一般为持续不断调用的,也就是不停的工作状态下使用,如果是隔比较久的一段时间再判断,可能数据缓存中会记录上一次未调取的数据,而直接反馈回来,所以在这种情况下使用,最好判断</span>2<span | ||
+ | lang=ZH-CN>次以上,排除残留干扰。</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>4<span | ||
+ | lang=ZH-CN>、如果开启了人脸识别程序、或者巡线识别程序后,想开启寻找颜色的程序,需要调用</span>resetColorMode<span | ||
+ | lang=ZH-CN>()函数,把摄像头由灰度模式返回为彩色模式,当然也可以重启摄像头模块。</span></span></p> | ||
+ | |||
+ | <p class=MsoTitle><span style='font-size:16.0pt;font-family:宋体'>5<span | ||
+ | lang=ZH-CN>、如果环境不是特别亮(如在太阳底下),建议模块在较暗处上电,然后再正常使用,这样识别效果更好,同一场景下识别的像素点更多。</span></span></p> | ||
</body></html> | </body></html> | ||