“2018秋第六次课第一组”版本间的差异

来自iCenter Wiki
跳转至: 导航搜索
(FUcreature移动页面第1组2018秋第六次课第一组:更不容易冲突的页面名)
 
(相同用户的4个中间修订版本未显示)
第1行: 第1行:
 +
<big><font color=red>'''万人血书要求取消Wiki验证码!'''</font></big>
 +
 +
建议老师移动一下页面,现在的页面名“第1组”日后非常容易引起冲突
 +
 
== 小组成员 ==
 
== 小组成员 ==
游旅-航院航72<br />
+
* 游旅-航院航72
陈亦心-美院美710<br />
+
* 陈亦心-美院美710
杨博琳-美院美710<br />
+
* 杨博琳-美院美710
康秋彦-美院美710<br />
+
* 康秋彦-美院美710
李姜帆-自动化自64<br />
+
* 李姜帆-自动化自64
[[User:FUcreature|蔡东龙-化学62]]
+
* [[User:FUcreature|蔡东龙-化学62]]
 +
 
 +
=== Gitlab仓库 ===
 +
http://gitlab.icenter.tsinghua.edu.cn/fucreature/smart_device_class6_group1
  
 
== 实验记录 ==
 
== 实验记录 ==
 +
=== PYNQ+USB摄像头人脸识别 ===
 +
:1. 启动PYNQ板,连接Jupyter Notebook,打开<code>examples/opencv_face_detect_webcam.ipynb</code>文件。
 +
* 注意到有一些代码被注释了:
 +
<pre>
 +
        #Step 2: Initialize Webcam and HDMI Out
 +
    # monitor configuration: 640*480 @ 60Hz
 +
#from pynq.drivers import HDMI
 +
from pynq.drivers.video import VMODE_640x480
 +
#hdmi_out = HDMI('out', video_mode=VMODE_640x480)
 +
#hdmi_out.start()
 +
</pre>
 +
 +
<pre>
 +
        #Step 3: Display webcam image via HDMI Out
 +
if (ret):
 +
    frame_1080p = np.zeros((1080,1920,3)).astype(np.uint8)
 +
    frame_1080p[0:480,0:640,:] = frame_vga[0:480,0:640,:]
 +
    #hdmi_out.frame_raw(bytearray(frame_1080p.astype(np.int8).tobytes()))
 +
else:
 +
    raise RuntimeError("Failed to read from camera.")
 +
</pre>
 +
 +
<pre>
 +
        # Step 6: Show results on HDMI output
 +
    # Output OpenCV results via HDMI
 +
frame_1080p[0:480,0:640,:] = frame_vga[0:480,0:640,:]
 +
#hdmi_out.frame_raw(bytearray(frame_1080p.astype(np.int8).tobytes()))
 +
</pre>
 +
 +
<pre>
 +
        # Step 8: Release camera and HDMI
 +
videoIn.release()
 +
#hdmi_out.stop()
 +
#del hdmi_out
 +
</pre>
 +
根据观察,我们发现被注释的代码都是HDMI相关,推测是因为我们采用的罗技USB摄像头没有采用HDMI接口进行数据传输导致的。
 +
:2. 实验开始,逐个Cell运行代码。Step 2: Initialize Webcam and HDMI Out给出了<code>Capture device is open: True</code>的输出。进行到Step 3: Show input frame on HDMI output时,我们却发现输出的照片不是摄像头正对的人脸,而是教室的一角,从Step2再开始重新运行,图片不变。
 +
:3. 仔细观察代码,我们发现图像的采集并不是在Step3而是在Step2完成的,所以我们执行Step3时才对准人脸已经错过了时机。
 +
:4. 而关于从Step2重新运行图片不变的问题,我们首先注意到重新运行的结果是<code>Capture device is open: False</code>,因此我们重复运行了一遍相应Cell,得到True的结果后再进入Step 3,得到了正确的结果。再观察后面的代码,发现在最后一个Cell的代码为<code>videoIn.release()</code>,由此可以推知在没有release的情况下进行采集会触发release。
 +
:5. 实验完成。结果如下:
 +
[[File:opencv_face_detect_webcam-group1.png]]
 +
[[File:opencv_face_detect_webcam-group2.png]]
 +
[[File:creeper.jpg|苦力怕警告]]

2018年11月5日 (一) 13:39的最后版本

万人血书要求取消Wiki验证码!

建议老师移动一下页面,现在的页面名“第1组”日后非常容易引起冲突

小组成员

  • 游旅-航院航72
  • 陈亦心-美院美710
  • 杨博琳-美院美710
  • 康秋彦-美院美710
  • 李姜帆-自动化自64
  • 蔡东龙-化学62

Gitlab仓库

http://gitlab.icenter.tsinghua.edu.cn/fucreature/smart_device_class6_group1

实验记录

PYNQ+USB摄像头人脸识别

1. 启动PYNQ板,连接Jupyter Notebook,打开examples/opencv_face_detect_webcam.ipynb文件。
  • 注意到有一些代码被注释了:
        #Step 2: Initialize Webcam and HDMI Out
    # monitor configuration: 640*480 @ 60Hz
#from pynq.drivers import HDMI
from pynq.drivers.video import VMODE_640x480
#hdmi_out = HDMI('out', video_mode=VMODE_640x480)
#hdmi_out.start()
        #Step 3: Display webcam image via HDMI Out
if (ret):
    frame_1080p = np.zeros((1080,1920,3)).astype(np.uint8)
    frame_1080p[0:480,0:640,:] = frame_vga[0:480,0:640,:]
    #hdmi_out.frame_raw(bytearray(frame_1080p.astype(np.int8).tobytes()))
else:
    raise RuntimeError("Failed to read from camera.")
        # Step 6: Show results on HDMI output
    # Output OpenCV results via HDMI
frame_1080p[0:480,0:640,:] = frame_vga[0:480,0:640,:]
#hdmi_out.frame_raw(bytearray(frame_1080p.astype(np.int8).tobytes()))
        # Step 8: Release camera and HDMI
videoIn.release()
#hdmi_out.stop()
#del hdmi_out

根据观察,我们发现被注释的代码都是HDMI相关,推测是因为我们采用的罗技USB摄像头没有采用HDMI接口进行数据传输导致的。

2. 实验开始,逐个Cell运行代码。Step 2: Initialize Webcam and HDMI Out给出了Capture device is open: True的输出。进行到Step 3: Show input frame on HDMI output时,我们却发现输出的照片不是摄像头正对的人脸,而是教室的一角,从Step2再开始重新运行,图片不变。
3. 仔细观察代码,我们发现图像的采集并不是在Step3而是在Step2完成的,所以我们执行Step3时才对准人脸已经错过了时机。
4. 而关于从Step2重新运行图片不变的问题,我们首先注意到重新运行的结果是Capture device is open: False,因此我们重复运行了一遍相应Cell,得到True的结果后再进入Step 3,得到了正确的结果。再观察后面的代码,发现在最后一个Cell的代码为videoIn.release(),由此可以推知在没有release的情况下进行采集会触发release。
5. 实验完成。结果如下:

Opencv face detect webcam-group1.png Opencv face detect webcam-group2.png 苦力怕警告