线程评级:
盒子颜色分类
# 1
你好,

我正在为我的硕士论文开发一个程序,最近才开始使用RoboDK。我是Python编程的新手。

我用RoboDK开发了一个有8个盒子的环境,其中两个是不同的颜色。我希望能够使用机械臂来检测盒子的颜色使用RGB值或任何更简单的方法,让它能够选择一个超出规格的盒子并把它放在线外。例如,在一条直线上有6个绿盒子,1个红盒子和1个蓝盒子。我想让带着摄像头的机械臂沿着直线遍历盒子,如果它看到红色或蓝色的盒子,就把它放在线外,因为它不是绿色的。我还想以红色的方框为主在另一种情况下,以蓝色的方框为主。

我已经将RoboDK环境与目标和所有东西连接起来,但发现很难将这种“颜色分类”能力编程到机器人中。


提前谢谢你,
Manisan


.rdk ColourSorting Project.rdk(大小:524.77 KB /下载:174)
嗨Manisan,

我们在Python文档中添加了一些OpenCV的例子,你可能会觉得有用,请参阅:
//www.w5838.com/doc/en/PythonAPI/exam...-detection

OpenCV有一个关于颜色分割的很好的教程,你可以根据自己的需要进行调整:
https://docs.opencv.org/4.x/df/d9d/tutor...paces.html
有关RoboDK及其功能的有用信息,请访问我们的在线文档通过观看我们的教程YouTube频道
# 3
你好山姆!

谢谢你的回复。我已经能够创建一个程序,用于项目的颜色排序方面,并已经完成了RoboDK环境的实验。颜色代码是用python编写的,我正在努力添加这些代码或将其与RoboDK环境集成。


我最初的方法是从RoboDK软件生成一个代码,通过添加我的颜色处理代码来编辑它,然后在模拟器中运行它。由于某种原因,代码将无法运行。我附上了一个模拟环境。你可以看到PP#, PL#等是不同的轨迹。我还附上了颜色处理代码。我想整合两者,并做一些“如果块是X颜色,做PP1或PA12,等等”

总之,我只是想找到一种方法来集成python的颜色处理代码与RoboDK环境。


附加文件
.rdk ColourSorting Project.rdk(大小:526.83 KB /下载:116)
. py ColorSorting.py(大小:1.43 KB /下载:118)
# 4
不错的工作!

您可以将参数保存到站点(或项目),并在其他程序调用中重用它们,请参阅://www.w5838.com/doc/en/PythonAPI/robo...k.setParam

例如,您可以在序列的开头运行ColorSorting脚本一次,向用户请求颜色。然后,您可以使用第二个脚本来使用所记录的颜色处理图像。

代码:
reject_color = 'RED'
RDK。setParam (MyColor, reject_color)

代码:
PP1 = RDK.Item('PPI1')
PP12 = RDK.Item('PPI12')

detected_color = detectColor(img)
reject_color = RDK.getParam('MyColor')
如果detected_color !- reject_color:
PP1.RunCode ()
PP12.RunCode ()

你应该看看我们的YouTube视频和Python文档!
https://www.youtube.com/channel/UCDpDmeu...OgN2nIEtUw
//www.w5838.com/doc/en/PythonAPI/index.html
有关RoboDK及其功能的有用信息,请访问我们的在线文档通过观看我们的教程YouTube频道
# 5
你好山姆,

采取了一点不同的方法,但我还是做到了。你的回复真的把我带到了正确的道路上,给我指出了正确的资源。我没有任何编程经验,但我成功做到了。我不知道你是否能看出来,但我很兴奋,RoboDK刚刚拯救了我的硕士学位哈哈。

这是代码和环境,所以人们可以尝试并改进它。

欢呼,
阿玛尼Caban


附加文件
. py 无标题的- 1. - py(大小:4.89 KB /下载:129)
.rdk ColourSorting Project.rdk(大小:527.84 KB /下载:186)
# 6
我很高兴你能够在没有使用RoboDK编程经验的情况下实现你的目标。这就是我们的目标!

我看到你在图像中心使用一个像素来获得颜色。在现实中,图像会受到环境光、阴影、反射等的影响

你可以使用颜色分割来检索主导颜色。下面是一个示例代码:

代码:
lower_b =[160, 100, 20] #红色下限在HSV
upper_b = [179, 255, 255] # HSV的红色上限
red_mask = cv.inRange(self. inrange)Img, np.array(lower_b), np.array(upper_b)
Red_pixels = red_mask[red_mask > 0].size
打印(red_pixels)
有关RoboDK及其功能的有用信息,请访问我们的在线文档通过观看我们的教程YouTube频道




浏览此线程的用户:
1客人(年代)