香橙派(OrangePi)上安装OpenCv实操
前言
– 想做一个轻量级人脸识别系统,放在办公室出入口,对进出人员进行识别,并且对员工打卡进行提醒。上报前一段时间内容识别到员工未打卡,喊出姓名提醒上班打卡。在下班后一段时间内,对出门的进行提醒。
这一套在Windows平台轻松实现了,但是这么个东西用一台PC,有些大材小用了,希望一移植到ARM上的小设备。
这就带来了环境问题。由于技术受限,自己编译OpenCv总是遇到问题。最后重要找到了,OpenCv-Python开发方式。摄像头的读取和人脸识别都轻量化,当然了直接客户端识别精准的人脸还差一步,用开发板客户端的人脸识别只做到识别出有人,真正的人脸识别和员工对上号,还是用来华为云FRS服务。
需要准备的设备
香橙派Zero2开发板
16G TF卡
HDMI显示器
一台Windows PC
步骤
我这里安装的是Zero2的Ubuntu系统,从香橙派官网下载。
– 首先把系统更新
$ sudo apt-get update
$ sudo apt-get upgrade
– 安装依赖环境
如果有提示找不到源,可以单独去掉
sudo apt install libgraphite2-3 libatspi2.0-0 libthai0 libxcb-shm0 libxcb-render0 libswscale5 librsvg2-2 libvorbisenc2 libavutil56 libzvbi0 libgsm1 libxinerama1 libxvidcore4 libsrt1.4-gnutls libswresample3 libatk1.0-0 libvorbisfile3 libogg0 libpangoft2-1.0-0 libpgm-5.3-0 libwayland-egl1 libharfbuzz0b libpango-1.0-0 libcairo2 libva-x11-2 libwayland-cursor0 libgfortran5 libxfixes3 libgme0 libxrender1 libvorbis0a libxi6 libudfread0 libspeex1 libwebpmux3 libsodium23 libdatrie1 libatk-bridge2.0-0 libxrandr2 libbluray2 libwavpack1 libxcomposite1 libpangocairo-1.0-0 libsoxr0 libshine3 libxkbcommon0 libvdpau1 libgtk-3-0 libopus0 librabbitmq4 libgdk-pixbuf-2.0-0 libavformat58 libmpg123-0 libxdamage1 libzmq5 libopenmpt0 libatlas3-base libva2 libva-drm2 libxcursor1 libssh-gcrypt-4 libavcodec58 libwayland-client0 libcairo-gobject2 libpixman-1-0 libdrm2 libsnappy1v5 libnorm1 libopenjp2-7 libtheora0 ocl-icd-libopencl1 libtwolame0 libepoxy0 libchromaprint1 libmp3lame0
– 1、采用第一种方式安装pip,如果不成功可以使用第二种
$ sudo apt-get install python-pip3 #安装pip3
$ sudo pip3 -h # 检查是否安装成功
– 2、第二种方式安装pip
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py #获取get-pip.py文件
$ python3 get-pip.py # #安装pip
$ sudo pip3 -h # 检查是否安装成功
– 最重要的一步安装OpenCv-Python
sudo pip3 install opencv-python
– 出现以下文字,安装成功
Installing collected packages: numpy, opencv-python
Successfully installed numpy-1.23.4 opencv-python-4.6.0.66
– 给开发板USB接上摄像头,并用命令查看
ls /dev/
如果出现 video0、video1、video2,说明已经识别。
如果是树莓派还需要设置启用pi camera. 香橙派默认就可以识别。
– 接下来可以小试身手
创建一个Camera.py文件,把以下内容复制进去,
香橙派USB的摄像头索引是1开始,树莓派是0开始
import cv2
def catch_video(name='my_video', video_index=1):
# cv2.namedWindow(name)
cap = cv2.VideoCapture(video_index) # 创建摄像头识别类
if not cap.isOpened():
# 如果没有检测到摄像头,报错
raise Exception('Check if the camera is on.')
while cap.isOpened():
catch, frame = cap.read() # 读取每一帧图片
cv2.imshow(name, frame) # 在window上显示图片
key = cv2.waitKey(10)
if key & 0xFF == ord('q'):
# 按q退出
break
if cv2.getWindowProperty(name, cv2.WND_PROP_AUTOSIZE) < 1:
# 点x退出
break
# 释放摄像头
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
catch_video()
运行效果截图
- 点赞
- 收藏
- 关注作者
评论(0)