【VM服务管家】VM4.x算子SDK开发_3.3 模块工具类

本文档详细介绍了VM4.x算子SDK在图像处理中的应用,包括位置修正、模板保存与匹配、图像相减、模板训练、Blob工具、点点测量、亮度测量等方法的使用,提供了详细的代码示例和问题解答。
摘要由CSDN通过智能技术生成

3.3.1 位置修正:位置修正算子工具的使用方法

描述
环境:MVDAlgrithm SDK3.4及以上 + VS2013及以上
现象:位置修正工具使用方法
解答
示例代码如下:

1.	C# 
2.	 
3.	bool re = true;
4.	//位置修正基准参数
5.	 CPositionFixTool PosFixToolObj = new CPositionFixTool();
6.	 CPositionFixBasicParam BasicParam = PosFixToolObj.BasicParam;
7.	 VisionDesigner.PositionFix.MVD_FIDUCIAL_POINT_F stBasinInit = new VisionDesigner.PositionFix.MVD_FIDUCIAL_POINT_F();
8.	 stBasinInit.stPosition.fX = MatchPoint.X;
9.	 stBasinInit.stPosition.fY = MatchPoint.Y;
10.	 stBasinInit.fAngle = Angle;
11.	 BasicParam.BasePoint = stBasinInit;//设置基准点
12.	//位置修正运行参数
13.	 VisionDesigner.PositionFix.MVD_FIDUCIAL_POINT_F stBasicRun = new VisionDesigner.PositionFix.MVD_FIDUCIAL_POINT_F();
14.	 stBasicRun.stPosition.fX = stPositionfX;
15.	 stBasicRun.stPosition.fY = stPositionfY;
16.	 stBasicRun.fAngle = stPositionAngle;
17.	 BasicParam.RunningPoint = stBasicRun;//设置运行点
18.	 //获取工具位置修正后Roi
19.	 MVD_SIZE_I stImageSize = new MVD_SIZE_I();
20.	 stImageSize.nWidth = ImageWidth;
21.	 stImageSize.nHeight = ImageHeight;
22.	 BasicParam.RunImageSize = stImageSize;
23.	 BasicParam.FixMode = MVD_POSFIX_MODE.MVD_POSFIX_MODE_HVA;
24.	 PosFixToolObj.BasicParam.InitialShape = SrcRegionROI;
25.	 PosFixToolObj.Run();
26.	 DesRegionROI = PosFixToolObj.Result.CorrectedShape;

问题根因
不熟悉位置修正算子工具使用方法

3.3.2 模板保存:实现模板自动加载的方法

描述
环境:MVDAlgrithm SDK3.4及以上 + VS2013及以上
问题:用户在使用算子SDK开发的模板匹配功能时,希望能在程序运行时可以自动加载之前训练过的模板。
解答
可以使用模板的导入导出方法,步骤如下:
第一步:程序初始化时导入模板

1.	C# 
2.	 
3.	public FrmMain()
4.	{
5.	    InitializeComponent();
6.	    if (File.Exists(savePatternPath))//判断文件是否存在
7.	    {
8.	        pattern.ImportPattern(savePatternPath);
9.	    }
10.	}

第二步:加载模板训练窗口时进行赋值

11.	C# 
12.	 
13.	private void FrmTempleteMatch_Load(object sender, EventArgs e)
14.	{
15.	    mvdAlmightyPatternEdit1.SetSubject(savePattern);
16.	}

第三步:在关闭训练窗口时导出模板:

17.	C# 
18.	 
19.	private void FrmTempleteMatch_FormClosing(object sender, FormClosingEventArgs e)
20.	{
21.	    savePattern.ExportPattern(savePatternPath);
22.	}

问题根因
不熟悉SDK算子的相关方法。

3.3.3 模板匹配: 获取模板匹配框和轮廓点的方法

描述
环境:MVDAlgrithm SDK3.4及以上 + VS2013及以上
现象:如何获取模板匹配轮廓点?
解答
依次实例化模板匹配工具、设置输入图像、设置ROI、运行、获取匹配点、轮廓点,示例代码如下:

C#
cHPFeaturePattern = new CHPFeaturePattern();
cHPFeaturePatMatchTool.InputImage = cMvdImage;
cHPFeaturePatMatchTool.Pattern = cHPFeaturePattern;
cHPFeaturePatMatchTool.ROI = cROI;
cHPFeaturePatMatchTool.BasicParam.ShowOutlineStatus = true; // 显示轮廓
cHPFeaturePatMatchTool.Run();
CHPFeaturePatMatchResult cHPFeaturePatMatchResult = cHPFeaturePatMatchTool.Result;
var OutlineList = cHPFeaturePatMatchResult.OutlineList;
foreach (var item in cHPFeaturePatMatchResult.MatchInfoList)
{
    var matchBox = new CMvdRectangleF(item.MatchBox.CenterX, item.MatchBox.CenterY, item.MatchBox.Width, item.MatchBox.Height);
    matchBox.Angle = item.MatchBox.Angle;
    matchBox.BorderColor = new MVD_COLOR(255, 0, 0, 255);
    mvdRenderActivex1.AddShape(matchBox);
}
if (cHPFeaturePatMatchTool.BasicParam.ShowOutlineStatus)
{
    foreach (var item in cHPFeaturePatMatchResult.OutlineList)
    {
        CMvdPointSetF pointSetG = new CMvdPointSetF();
        CMvdPointSetF pointSetY = new CMvdPointSetF();
        CMvdPointSetF pointSetR = new CMvdPointSetF();
        foreach (var point in item.EdgePointList)
        {
            if (0 == point.Score)
            {
                pointSetG.AddPoint(point.Position.fX, point.Position.fY);
            }
            else if (1 == point.Score)
            {
                pointSetY.AddPoint(point.Position.fX, point.Position.fY);
            }
            else if (2 == point.Score)
            {
                pointSetR.AddPoint(point.Position.fX, point.Position.fY);
            }
        }
        pointSetG.BorderColor = new MVD_COLOR(0, 255, 0, 255);//绿色得分高的点
        pointSetY.BorderColor = new MVD_COLOR(255, 255, 0, 255);//黄色得分低的点
        pointSetR.BorderColor = new MVD_COLOR(255, 0, 0, 255);//红色丢弃的点

        if (0 != pointSetG.PointsList.Count)
        {
            mvdRenderActivex1.AddShape(pointSetG);
            matchOutline
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值