风筝
发表于: 2019-12-23 22:09:07 | 显示全部楼层

在本篇文章中,我们将主要介绍在Raspberry Pi使用机器学习程序TensorFlow和OpenCV设置图像和视频分类。我们将从对图像进行基本的对象检测开始,然后进一步介绍实时对象检测。


如何设置Tensorflow、OpenCV和NumPy

在继续之前,请确保已在Raspberry Pi上正确安装TensorFlow。


您还需要OpenCV在输出上显示帧。在Raspberry Pi的终端中键入以下命令以安装所需的软件包:

  1. sudo apt install libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test libqtcore4
复制代码

然后输入以下命令以在Raspberry Pi上安装适用于Python 3的OpenCV 3。在此命令中包含Pip3允许OpenCV为Python 3安装。

  1. sudo pip3 install opencv-contrib-python libwebp6
复制代码

本文所需的最后一个库是NumPy。 NumPy是一个库,可以很轻松地在Python中执行数组操作。请输入以下命令进行安装。

  1. Pip3 install python-numpy
复制代码

安装图像分类器

要安装图像分类器,首先创建一个新目录,我们将在其中保存TensorFlow模型。

  1. mkdir tensorflow
  2. cd tensorflow
复制代码

现在我们可以在新目录中克隆TensorFlow模型存储库。git克隆可以在GitHub上找到。

  1. cd /home/pi/tensorflow/models/research/object_detection
复制代码

我们需要从Github下载protobuf并将其解压缩到object_detection文件夹中,然后将proto.exe从bin目录放置到object_detection文件夹中。

  1. protoc protos/*.proto --python_out=
复制代码

如何检测图像中的对象

目前有一个Jupyter笔记可以读取图像并检测对象,我更改了此代码,使用OpenCV替代了Matplotlib,因为OpenCV的速度比matplotlib快。


在本文末尾处的名为Object Detection的zip文件中的代码将检测object_detection / test_images文件夹中存在的图像中的对象。代码中的注释说明了一切工作原理。


将该代码复制到object_detection目录中的文件中,并将文件命名为“objectDetection.py”。


要运行代码,请输入:

  1. python3 objectDetection.py
复制代码

objectDetection.png

在要检测对象的文件夹中添加更多图像。

1234.jpg

将其他图像添加到对象检测器。

2.png

添加更多图像,图像检测器可以进行更准确的物体检测!


实时对象检测

现在,让我们编写使用OpenCV来一帧一帧地执行对象检测的代码。


Raspberry Pi的帧速率太慢,因为它需要大量的处理能力,并且Raspberry Pi的功能还不够强大,因此启动代码将花费很长时间。

我们将对上一个示例中使用的代码进行一些更改,以使其实时运行。


我们将添加照相机对象,这将有助于我们在Raspberry Pi上访问照相机。

  1. cap = cv2.VideoCapture(0)
复制代码

我们不需要将图像转换为NumPy数组,因为OpenCV会为我们解决这一问题。

  1. while True:
  2. ret, image_np = cap.read()
复制代码

在检测到视频帧中的对象之后,我们可以在输出窗口中显示它们,然后等待一段时间,判断任何键按下。如果按“ q”键,则程序关闭。否则,程序将拍摄另一帧并再次执行对象检测。程序一直运行,直到按“ q”为止。

  1. cv2.imshow('object detection', cv2.resize(image_np, (800,600)))
  2.         if cv2.waitKey(1) == ord('q'):
  3.           cv2.destroyAllWindows()
  4.           break
复制代码

此部分的完整代码也在下面给出。将代码保存在文件中,并将其命名为“ objectDetection1.py”。以下命令运行代码。

  1. python3 objectDetection1.py
复制代码

现在,该程序已关闭并运行了实时对象检测。


以下是本文使用的完整代码: Real-time Object Detection Raspberry Pi Code.rar (1.47 KB, 下载次数: 7)

Object Detection Code for Tensorflow and Raspberry Pi.rar (3.03 KB, 下载次数: 8)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 23 | 回复: 33



手机版|

GMT+8, 2024-12-23 02:22 , Processed in 0.071595 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表