2018秋第六次课第一组

万人血书要求取消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 苦力怕警告

最后修改于2018年11月5日 (星期一) 13:39