存储PLCNext社区PLCNext. on LinkedInPLCNext. on Instagram  PLCNext. on YouTube github plcnext社区存储PLCNext社区

 

 如何创建博客条目

制造商博客
Hits: 1522

OpenCV - Python,PLCNext上的红灯检测

开放式CV是其中最常用的计算机视觉库之一。打开CV可用于面部识别,对象跟踪,扫描条形码,对此博客更重要,检测灯是否打开或关闭。在此博客中,我将帮助您开始在PLCNext上打开CV和Python,并在如何预处理图像以进行红色光检测的小型代码示例。此博客是在早期博客帖子中解释的PLCNext控制器上使用Open-CV的替代方法。

先决条件

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

下载opencv-python映像

在安装Balena-Engine后,将SSH会话启动到控制器并以root用户身份登录。
执行以下命令并抓取一杯咖啡,在将图像下载到控制器上之前需要一段时间。

balena-engine pull pxcbe/opencv-python

验证安装

在此步骤中,我们将验证图像并获取安装在图像中的Open-CV版本。执行下一个命令。
如果一切顺利,容器将打印开放式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。
下载内容 这个reposity. 并将它们粘贴到刚刚创建的目录内。

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

 

测试脚本

现在我们将测试您从GitHub页面下载的脚本,并互动运行容器。以root执行next命令:

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. 调整大小 命令。输出看起来与原始输出相同,但仅是初始图像的50%。

开放式CV调整大小

下一步是灰度级图像。我们用第17行上发现的功能灰度灰度,结果可以在下面的图像上看到结果。

打开CV灰色

我们的备用管道的最后一步是要阈值的图像,一定值下的每个像素都将是黑色的,上方的所有值都是白色的。有一些不同的方法来三个图像,有些方法会赋予更好的结果。但对于今天的第21行 cv2.临界点 就足够了。结果可以在下图中找到。我们现在只有一个小的图像尺寸,只有黑白像素。一种简单的检测光从静止相机接通的方法是定义密集(ROI)的区域并扫描白色像素。然而,更复杂的算法将为您提供更好的结果。我将其他一些博客联系在进一步的读数下处理此主题。

打开CV阈值

 

进一步读物

//docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html

//docs.opencv.org/master/dd/d43/tutorial_py_video_display.html 

//medium.com/// @ kenan.r.alkiek / https-medium-com-com-kenan-r-allakiek-traffic-light-recongentition-505d6ab913b1

//www.pyimagesearch.com/2016/10/31/detecting-multiple-bright-spots-in-an-image-with-python-and-opencv/

//www.learnopencv.com/opencv-qr-code-scanner-c-and-python/

容器仍有一点不确定吗?
您可能会发现这些博客有趣:

//www.serala.net/en/hn-makers-blog/481-node-red-and-getting-started-with-docker.html

//www.serala.net/en/hn-makers-blog/482-node-red-with-docker-tips-and-best-practice.html

//www.docker.com/resources/what-container

 

免责声明

这是在PLCNext控制器上使用Open-CV工作的一种方法。在 这个博客 您将学习如何为PLCNext目标交叉编译开放式CV C ++。
然而,它似乎更加繁琐,它肯定有它对生产系统的价值。在决定您的项目应该是什么之前,请务必进行尽职调查。

图像将无法定期更新。如果您有兴趣过期或维护此项目,请联系 此电子邮件地址受到垃圾邮件程序的保护。您需要启用Javascript来查看它。

我有目的地遗漏了如何无限期地运行容器,因为您的申请会有很多不同。
请找到一种适合自己的方式或与参与您的项目的人讨论这一点。 

学分

容器的工作大量基于Mohaseeb的工作