VisionPro笔记:色彩区分 点击:632 | 回复:1



工控老顽童

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 10回
  • 年度积分:0
  • 历史总积分:27
  • 注册:2004年7月26日
发表于:2015-11-01 14:51:55
楼主

VisionPro:色彩区分

来自:blog.sina.com.cn/yangchao168

 利用色彩来区分物体这类的项目没做过,总觉得很难,尤其是涉及到RGB和HSI等。看到VisionPro中有这种实例,觉得很有意思。

1)声明变量:

Private mTool as CogColorSegmenterTool

Private mImageFileTool as CogImageFileTool

Private mColorRangesInitialized as Boolean

2) 实例化mTool和mImageFileTool之后,加载图像并显示,接下来就是初始化Color Range并把它们添加到ColorCollection工具中。

 实际区分所有的颜色很难,这里采用CogSimpleColor

Dim defaultColor as CogSimpleColor

defaultColor=new CogSimpleColor(CogImageColorSpaceConstants.RGB)

定义两种黄色

Dim colorRangeYellow1 as CogColorRangeItem


 
原始图像

 colorRangeYwllow1=new CogColorRangeItem(defaultColor)

利用Norminal,Low/High tolerance 和softness来填充每个Plane

colorRangeYellow1.PlaneRange0.Update(229, -81, 26, 0)

colorRangeYellow1.PlaneRange1.Update(227, -100.2, 28, 0)

colorRangeYellow1.PlaneRange2.Update(49, -33.3, 36.7, 0)

给Segment Tool添加这种颜色

mTool.RunParams.ColorRangeCollection.Add(colorRangeYellow1)

接下来是第二种黄色

Dim colorRangeYellow2 As CogColorRangeItem
colorRangeYellow2 = New CogColorRangeItem(defaultColor)
colorRangeYellow2.PlaneRange0.Update(130, -29.8, 23.7, 0)
colorRangeYellow2.PlaneRange1.Update(122, -28.1, 32.7, 0)
colorRangeYellow2.PlaneRange2.Update(22, -11.8, 11.8, 0)
mTool.RunParams.ColorRangeCollection.Add(colorRangeYellow2) 


 
利用黄色区分的结果

 定义3种黄色

Dim colorRangeRed1 As CogColorRangeItem
colorRangeRed1 = New CogColorRangeItem(defaultColor)
colorRangeRed1.PlaneRange0.Update(109, -28.4, 33.8, 0)
colorRangeRed1.PlaneRange1.Update(34, -20.8, 17.8, 0)
colorRangeRed1.PlaneRange2.Update(11, -8.7, 10.2, 0)
colorRangeRed1.Selected = False
mTool.RunParams.ColorRangeCollection.Add(colorRangeRed1)

默认选择黄色,所以对于红色的Selected属性设为False。

。。。

在初始化所有的颜色后

mColorRangesInitialized =true   '可以作为后续的判断条件

3)颜色选择

如果选择黄色

mTool.RunParams.ColorRangeCollection.Item(0).Selected=true


 
利用红色区分的结果

mTool.RunParams.ColorRangeCollection.Item(1).Selected=true 

如果选择红色,可以设定Item(2),(3),(4)为Selected。

4)区分

mTool.inputImage=InputImage

mTool.Run()

输出结果图像

If (mTool.RunStatus.Result.Equals(CogToolResultConstants.Accept))  Then
   CogDisplaySegmentImage.Image = mTool.Result  ‘显示图像

Else
   CogDisplaySegmentImage.Image = Nothing   ’结果有误
End If


 
利用黄红区分的结果

 

 

 

 

 

 

 

 

 




wayaj

  • 精华:30帖
  • 求助:95帖
  • 帖子:5269帖 | 8770回
  • 年度积分:0
  • 历史总积分:28783
  • 注册:2020年5月25日
发表于:2015-11-01 17:31:37
1楼

不懂,来点可视的;结果!


热门招聘
相关主题

官方公众号

智造工程师