1. 磐创AI首页
  2. Medium

在机器人操作系统(ROS) - 中使用带Gazebo的OPENCV第2部分 - 读取和解码二维码…


我们将在本系列的“™”1部分中构建的代码基础上进行扩展。如果您还没有尝试过,那么一定要回去,试一试,然后再回到这里来!如果您没有尝试过™,请务必回去尝试,然后再回到这里!

链接到本系列的第-EURONE“1部分

链接到GitHub回购

它包含本教程系列中使用的所有脚本、模型和坐标文件。

推出露台世界

在运行下一个命令之前,请确保您已经运行了git ull,并获取了{YOUR_WORKSPACE_NAME}/DEVELL/文件夹中的-uro™s的setup.bash文件。

然后,要启动Gazebo World,请在终端中运行此命令。

$rosLaunch pkg_cv_ros_Tutorial_by_dhanuzch 2_world.Launch

这应该会推出一个露台世界,上面有一面墙上有二维码和一个摄像头。它应该看起来像这样–欧元

如果你能看到这个,恭喜你!到目前为止,您已经正确地设置了所有内容。

或者,如果您想启动Gazebo world并开始运行开箱即用的脚本。那就跑吧

$rosLaunch pkg_cv_ros_Tutorial_by_dhanuzch 2_world_and_script.Launch

如果您想了解代码是如何工作的,请继续阅读

图像预处理

在开始编写代码之前,您必须了解这个称为图像预处理的东西。这是我们必须做的事情,以便从原始相机输出中获得有意义的数据。这是一篇关于欧元™图像预处理的文章,我个人认为这篇文章对欧元˜™很有帮助。在本教程中,我们将使用一些非常基本的预处理技术。™将在本教程中使用一些非常基本的预处理技术。下面,Iâuro™讨论了许多预处理图像以解码二维码的方法中的一种。article on ‘Image pre-processing’

请注意,经过预处理后的图像是多么清晰。现在让?euro™转到代码上。

“欧元法典”解释道。

由于我们是在“EUROURE”1部分中讨论的代码基础上构建的,因此I?EUREO™将只关注所做的更改。Part — 1

在我的GitHub资源库中,此代码也作为包的一部分提供my GitHub repo

吡兹巴尔文库

这个库是用来解码二维码和条形码的,要了解更多关于这个库的信息,请看这篇文章。article

第8行导入pyzbar库中可用的解码函数。

图像预处理

第29行用于将RESIZED_IMAGE转换为灰度图像。

第30行是设置阈值的值。请注意,阈值取决于很多因素。我™已经把它设为40。要深入了解它,请查看官方指南。official guide

第31行将灰度图像转换为二进制图像。这里,阈值255表示所有大于40的像素值将设置为255(白色)。

由于本教程中的照明条件和二维码是稳定的,因此我们采用这种方法。但在现实生活中,使用自适应阈值或其他技术可能是最好的选择。

解码

第36行是最简单的ğŸ˜>。您所要做的就是以图像为参数调用DECODE函数,睡觉将由Pyzbar库处理。这将返回解码结果。

第38行打印解码结果。

解码结果如下-欧元?

[Decoded(data="You're breathtaking!", type='QRCODE', rect=Rect(left=100, top=278, width=216, height=214), polygon=[Point(x=100, y=278), Point(x=100, y=490), Point(x=316, y=492), Point(x=315, y=278)])]

™?我们的输出包含的信息不是太多了吗?

只打印解码的数据。让?euro™在我们的脚本中插入以下行。

qr_data = qr_result[0].data
print qr_data

好的,这给了我们想要的输出。哪一个是?EUROUE?EUROœYou?EURO™Re激动人心的?EURO�:)DO?EURO™不要相信我?以下是-euro™s的输出xD

?™在终端中获得所需的输出不是有点不方便吗?

因此,接下来我们将尝试打印摄像机输出窗口中的数据。

在简历窗口中绘制和书写有意义的内容

接下来,我们的目标是在检测到的二维码上画一个框,并在框的顶部打印消息。

第43行从QR_RESULT中获取二维码在窗口中的位置

利用CV2中可用的矩形函数和从第43行获得的数据,第45行围绕颜色为红色(0,0,255)和厚度为4的二维码绘制一个矩形

第47行定义打印二维码数据的格式

第48行打印方框上方10个像素的二维码数据。这是用(x,y-10)定义的,字体类型为Hershey simplex。颜色为红色(0,0,255),厚度为2。所有这些详细信息都将打印在显示RESIZED_IMAGE的窗口中

现在,用其他二维码试试吧。看看代码是否起作用?

如果您有任何疑问或遇到困难,请在评论中告诉我。并且一定要评论,我的下一个教程应该是关于什么的!

THE?EURO™就是这个系列的伙计们!

再见!

关注我们的机器人表情包?欧元“新闻?欧元”“提示?欧元”项目和更多

https://www.instagram.com/everythingrobotics/https://www.instagram.com/everythingrobotics/

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/09/%e5%9c%a8%e6%9c%ba%e5%99%a8%e4%ba%ba%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9fros%e2%80%8a-%e2%80%8a%e4%b8%ad%e4%bd%bf%e7%94%a8%e5%b8%a6gazebo%e7%9a%84opencv%e7%ac%ac2%e9%83%a8%e5%88%86%e2%80%8a-%e2%80%8a/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息