# 认识摄影镜头模组
---

## A.	摄影镜头模组
详情参见[认识CocoBlockly X编程环境](/aikit/AI_1.md)中“A.认识AI模组及应用”部分。

---
## B.	相机积木介绍
<table style="margin-top:20px;">
	<tr>
		<td width="50%">积木</td>
		<td width="20%">指令</td>
    <td width="30%">说明</td>
	</tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l1.png" width="200"/></td>
    <td width="20%">初始化</td>
    <td width="30%">汇入相机的程式库，可设定以下两项属性：<br>
影像尺寸：320x240及160x120<br>
影像色彩：彩色 及 黑白
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l2.png" width="200"/></td>
    <td width="20%">影像尺寸</td>
    <td width="30%">设定影像的显示尺寸，最大尺寸可输入：宽240 高240
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l3.png" width="200"/></td>
    <td width="20%">获取影像</td>
    <td width="30%">获取从摄影镜头拍摄的影像
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l4.png" width="200"/></td>
    <td width="20%">校正图像</td>
    <td width="30%">对广角镜头获取的图片进行校正
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l5.png" width="200"/></td>
    <td width="20%">属性设定</td>
    <td width="30%">设定「启用」或「停用」以下五个属性：<img src="/media/ai/AI_l6.png" width="200"/>
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l7.png" width="200"/></td>
    <td width="20%">属性设定</td>
    <td width="30%">设定影像的对比度、亮度及色彩饱和度等数值属性，范围定为-3至3
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l8.png" width="200"/></td>
    <td width="20%">录制影片</td>
    <td width="30%">设定影片录制参数，包括储存路径、影片宽度及高度
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l9.png" width="200"/></td>
    <td width="20%">画布录制</td>
    <td width="30%">录制影片
</td>
  </tr>
  <tr>
    <td width="50%"><img src="/media/ai/AI_l10.png" width="200"/></td>
    <td width="20%">停止录影</td>
    <td width="30%">停止录影
</td>
  </tr>
</table>

---
## C.	基础编程
##### 活动一：启用AI摄影镜头
<table style="margin-top:20px;">
<tr>
  <td>1.	AI模组｜图像处理：【萤幕初始化】、【创建空白画布】、【设定起始点坐标】<br>
2.	AI模组｜相机：【相机初始化】<br>
3.	AI模组｜相机：【影像尺寸】<br>
4.	循环：【重复执行】<br>
5.	变数：建立变数命名为【canvas】<br>
6.	AI模组｜相机：【获取影像】<br>
7.	AI模组｜图像处理：【显示画布】<br>
</td>
  <td><img src="/media/ai/AI_m1.png" width="350"/></td>
</tr>
<tr><td colspan=2>运行结果：启用AI摄影镜头并在萤幕上出现画面<br><img src="/media/ai/AI_m2.png" width="350"/></td></tr>
</table>

##### 活动二：每隔1秒拍照并储存相片
<table style="margin-top:20px;">
<tr>
  <td>重复活动一的程式，在步骤5及7中间加入以下积木指令：<br>
1.	AI模组｜图像处理：【储存影像】，
位置：/sd/user/saved.jpg
在步骤6之后加入以下积木指令：<br>
2.	时间：【等候】设定为1000毫秒<br>

</td>
  <td><img src="/media/ai/AI_m3.png" width="350"/></td>
</tr>
<tr><td colspan=2>运行结果：每隔1秒会自动拍照1次，影像显示在萤幕上并储存在SD记忆卡中。从AI推理模组取出SD记忆卡，透过电脑打开影像档案：user/saved.jpg<br><img src="/media/ai/AI_m4.png" width="350"/></td></tr>
</table>
思考问题：上面程式运行一段时间后，为什么SD记忆卡仍只有一幅影像档案？
<br><img src="/media/ai/AI_s9.png" width="350"/>

##### 挑战一：
<table style="margin-top:20px;">
<tr>
  <td >修改上面程式，每次拍照并储存图像时均会将新的图像存进SD卡。<br>
提示：尝试运用以下的积木<br>
<img src="/media/ai/AI_m5.png" width="200"/>
<img src="/media/ai/AI_m6.png" width="200"/>
</td></tr>
<tr><td >参考程式：<br><img src="/media/ai/AI_m7.png" width="350"/></td></tr>
</table>

##### 活动三：透过按动按钮拍照并储存相片
<table style="margin-top:20px;">
<tr>
  <td>使用活动一程式，在步骤5及7之间加入以下程式：<br>
1.	逻辑：【逻辑判断】<br>
2.	AI模组｜基础：【按钮状态】<br>
3.	AI模组｜图像处理：【储存影像】<br>
4.	AI模组｜图像处理：【显示画布】<br>
5.	时间：【等候】设定为1000毫秒<br>
</td>
  <td><img src="/media/ai/AI_m8.png" width="350"/></td>
</tr>
<tr><td colspan=2>运行结果：即时影像显示在萤幕上，当按钮B按下时，会将即时影像储存在SD记忆卡并在萤幕上停顿显示1秒，随后再次显示即时影像。</td></tr>
</table>

##### 活动四：录制影片
<table style="margin-top:20px;">
<tr>
  <td>1.	AI模组｜图像处理：【萤幕初始化】、【创建空白画布】、【设定起始点坐标】<br>
2.	AI模组｜相机：【相机初始化】<br>
3.	AI模组｜相机：【影像尺寸】<br>
4.	AI模组｜视讯处理：【录制影片】<br>
5.	循环：【重复执行】<br>
6.	变数：建立变数命名为【camera】<br>
7.	AI模组｜相机：【获取影像】<br>
8.	AI模组｜视讯处理：【画布录制】<br>
9.	萤幕｜图像处理：【显示画布】<br>
10.	AI模组｜视讯处理：【停止录制】<br>

</td>
  <td><img src="/media/ai/AI_m9.png" width="350"/></td>
</tr>
<tr><td colspan=2><img src="/media/ai/AI_m10.png" width="350"/></td></tr>
<tr><td colspan=2>运行结果：从AI模组取出SD记忆卡，在电脑开启影片档案(路径：/sd/user/record.avi)查看影片是否录制成功。</td></tr>
</table>


##### 活动五：透过按钮录制影片
<table style="margin-top:20px;">
<tr>
  <td>1.	AI模组｜图像处理：【萤幕初始化】、【创建空白画布】、【设定起始点坐标】<br>
2.	AI模组｜相机：【相机初始化】<br>
3.	AI模组｜相机：【影像尺寸】<br>
4.	AI模组｜视讯处理：【录制影片】<br>
5.	循环：【重复执行】<br>
6.	变数：建立变数命名为【camera】<br>
7.	AI模组｜相机：【获取影像】<br>
8.	萤幕｜图像处理：【显示画布】<br>
9.	逻辑：【逻辑判断】<br>
10.	AI模组｜基础：【按钮状态】<br>
11.	如按钮A按下:AI模组｜视讯处理：【画布录制】<br>
如按钮A松开:AI模组｜视讯处理：【停止录制】

</td>
  <td><img src="/media/ai/AI_m11.png" width="350"/></td>
</tr>
<tr><td colspan=2>参考程式：<img src="/media/ai/AI_m12.png" width="350"/></td></tr>
<tr><td colspan=2>运行结果：即时影像显示在萤幕上并录制。<br>
当按钮A按下时，开始录像并会将即时影像储存在SD记忆卡中，不按则只显示即时画面不录影。
</td></tr>
</table>
