亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

OpenCV – Python,PLCnext 上的红灯检测

Open CV 是最常用的计算机视觉库之一。 Open CV 可用于人脸识别、对象跟踪、扫描条码等,对本博客来说更重要的是,检测灯是开还是关。在这篇博客中,我将帮助您在 PLCnext 上开始使用 Open CV 和 Python,并提供一个关于如何预处理图像以进行红光检测的小代码示例。本博客是在之前的博客文章中解释的 PLCnext 控制器上使用 Open-CV 的另一种方式。

先决条件

今天我使用的是 AXC F 2152 控制器,但可以在 AXC F 1152 上遵循相同的程序,在 AXC F 3152 和 RFC 4072s 上遵循非常相似的程序。今天唯一的先决条件是在您使用的控制器上安装 Balena-Engine。可以在 PLCnext Github 页面上找到成功安装 Balena-Engine 的步骤。建议使用 8gb SD 卡。我们将使用 SSH 连接和 WinSCP 来访问控制器。这些工具的使用超出了本博文的范围。您可以在此论坛中或通过 Google 快速搜索找到有关如何使用它们的良好指南。

下载 OpenCV-Python 镜像

安装 balena-engine 后,启动与控制器的 SSH 会话并以 root 用户身份再次登录。
执行以下命令,喝杯咖啡,图像下载到控制器需要一段时间。

balena-engine pull pxcbe/opencv-python

验证安装

在这一步中,我们将验证映像并在映像中安装 Open-CV 版本。执行下一个命令。
如果一切顺利,容器将打印 Open-CV 版本,容器将自行移除。
在撰写本文时,安装的版本是:4.1.0

balena-engine run -it --rm \
       pxcbe/opencv-python \
       python -c "import cv2; print(cv2.__version__)"


设置工作目录

打开 WinSCP 并在目录 /opt/plcnext 中创建一个文件夹 opencv。因此,您的路径应该是 /opt/plcnext/opencv。
下载此存储库的内容并将它们复制粘贴到我们刚刚创建的目录中。

您可以使用自己的图片更改 .jpg 并修改 app.py 以满足您的需求。

测试脚本

现在我们将测试您从 GitHub 页面下载的脚本并以交互方式运行容器。以root身份执行下一条命令:

balena-engine run -it --rm -v /opt/plcnext/opencv/:/opencv_app pxcbe/opencv-python /bin/bash

你现在在容器内的一个 shell 会话中,调用 opencv_app 目录

cd opencv_app

并启动脚本:

python app.py

您应该在 shell 中看到一些输出,并在文件夹 /opt/plcnext/opencv 中看到 3 个新图像。您可能需要先刷新您的 winSCP 文件夹才能看到它们!

那么我们做了什么?

在我们开始确定我们的灯是开还是关之前,我们需要对初始图像“open_cv.jpg”进行一些预处理。您通常会做的第一件事是重新缩放图像以保留一些计算能力。这是在第 12 行完成的(app.py 的) cv2.resize 的文件 命令。输出看起来与原始图像相同,但只有初始图像的 50%。

下一步是对图像进行灰度化。我们用第17行的函数对图像进行灰度化,结果如下图所示。

我们预处理管道的最后一步是对图像进行阈值处理,低于某个值的每个像素都是黑色的,高于相同值的所有像素都是白色的。有一些不同的方法来划分图像,有些会给出更好的结果。但是今天第 21 行 cv2.threshold 就足够了。结果如下图所示。我们现在有一个只有黑白像素的小图像尺寸。一个简单的方法来检测是否有来自固定相机的光是定义感兴趣区域 (ROI) 并扫描白色像素。然而,更复杂的算法会给你一个更好的结果。我在进一步阅读下链接了一些其他处理该主题的博客。

进一步阅读

https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html https://docs.opencv.org/master/dd/d43/tutorial_py_video_display.html

https://medium.com/@kenan.r.alkiek/https-medium-com-kenan-r-alkiek-traffic-light-recognition-505d6ab913b1

请接受营销 cookie 以观看此视频。

请接受营销 cookie 以观看此视频。

还是有点不确定容器?
您可能会发现这些博客很有趣:

https://www.plcnext-community.net/en/hn-makers-blog/481-node-red-and-getting-started-with-docker.htmlhttps://www.plcnext-community.net/en/ hn-maker-blog/482-node-red-with-docker-tips-and-best-practice.html https://www.docker.com/resources/what-c​​ontainer

免责声明

这是在 PLCnext 控制器上使用 open-cv 的一种方法。在本博客中,您将了解如何为 PLCnext 目标交叉编译 open-cv c++。
不管它看起来更麻烦,它肯定对生产系统有价值。在决定哪种方式最适合您的项目之前,请务必进行尽职调查。

图像不会得到定期更新。如果您有兴趣扩展或维护此项目,请联系 [email protected]

我故意省略了如何无限期地运行容器,因为这与您的应用程序有很大不同。
请自行寻找合适的方式或与参与您项目的人员讨论。

学分

容器的工作很大程度上基于 mohaseeb 的工作


工业技术

  1. Python 运算符
  2. 实时人脸识别:端到端项目
  3. 自动视觉对象跟踪
  4. 结合电子、光子芯片实现超快量子光检测
  5. LED配件-LED灯带配件
  6. 24 单元 7:Mastercam
  7. 一个简单的基于 REST 的库,用于在 Python 的 PLCnext AXC F 2152 PLC 中使用变量
  8. PLCnext 上的集群管理?
  9. PLCnext Tableau 仪表板
  10. PLCnext Power BI 报告
  11. PLCnext Grafana 仪表板
  12. PLCnext 控件上的 Java 应用程序