“2018秋第六次课第一组”版本间的差异
来自iCenter Wiki
(以“== 小组成员 == 游旅-航院航72 陈亦心-美院美710 杨博琳-美院美710 康秋彦-美院美710 李姜帆-自动化自64 User:FUcreature|蔡东龙-化...”为内容创建页面) |
FUcreature(讨论 | 贡献) 小 (FUcreature移动页面第1组至2018秋第六次课第一组:更不容易冲突的页面名) |
||
(2位用户的6个中间修订版本未显示) | |||
第1行: | 第1行: | ||
+ | <big><font color=red>'''万人血书要求取消Wiki验证码!'''</font></big> | ||
+ | |||
+ | 建议老师移动一下页面,现在的页面名“第1组”日后非常容易引起冲突 | ||
+ | |||
== 小组成员 == | == 小组成员 == | ||
− | 游旅-航院航72 | + | * 游旅-航院航72 |
− | 陈亦心-美院美710 | + | * 陈亦心-美院美710 |
− | 杨博琳-美院美710 | + | * 杨博琳-美院美710 |
− | 康秋彦-美院美710 | + | * 康秋彦-美院美710 |
− | 李姜帆-自动化自64 | + | * 李姜帆-自动化自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. 实验完成。结果如下: