成都市住房与城乡建设厅网站,外包公司 网站建设 深圳,滁州网站建设公司,佛山手机网站设计制作目录 3.3.1 位置修正#xff1a;位置修正算子工具的使用方法3.3.2 模板保存#xff1a;实现模板自动加载的方法3.3.3 模板匹配#xff1a; 获取模板匹配框和轮廓点的方法3.3.4 模板训练#xff1a;模板训练执行完成的判断方法3.3.5 图像相减#xff1a;算子SDK开发图像相减… 目录 3.3.1 位置修正位置修正算子工具的使用方法3.3.2 模板保存实现模板自动加载的方法3.3.3 模板匹配 获取模板匹配框和轮廓点的方法3.3.4 模板训练模板训练执行完成的判断方法3.3.5 图像相减算子SDK开发图像相减的方法3.3.6 图像修正图像修正工具的使用方法3.3.7 Blob工具Blob工具的使用方法3.3.8 点点测量点点测量工具的使用方法3.3.9 亮度测量亮度测量工具的使用方法3.3.10 圆查找圆查找的方法3.3.11 仿射变换图像仿射变换的使用方法3.3.12 直线查找直线查找工具的使用方法3.3.13 缺陷检测直线边缘缺陷检测工具的使用方法3.3.14 N点标定N点标定的使用方法3.3.15 畸变校正畸变校正的使用方法3.3.16 字符识别多线程同时读取同一个本地模型的方法3.3.17 字符识别VM自带字符识别模型的区分3.3.18 设置掩膜给模块设置掩膜的方法 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);matchOutlineList.Add(pointSetG);}if (0 ! pointSetY.PointsList.Count){mvdRenderActivex1.AddShape(pointSetY);matchOutlineList.Add(pointSetY);}if (0 ! pointSetR.PointsList.Count){mvdRenderActivex1.AddShape(pointSetR);matchOutlineList.Add(pointSetR);}}
}问题根因 不熟悉如何获取匹配框和匹配点
3.3.4 模板训练模板训练执行完成的判断方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象 算子SDK开发打开模板匹配后未训练模板但模板状态不为null。. 解答 模板是否训练完成的条件不应以模板是否等于null来判断模板是否训练成功以模板的结果来判断C#代码如下
1. C#
2.
3. if(pattern ! null){}//判断模板是否为空
4. if(pattern.ReginList.Count ! 0){}//判断模板训练的区域个数是否为0
5. if( pattern1.GetPatternResult() ! null){}//判断模板是否训练成功问题根因 不熟悉SDK算子的相关方法。
3.3.5 图像相减算子SDK开发图像相减的方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象WinForm下的算子SDK图像相减的使用方法 解答 WinForm下进行算子SDK开发时图像相减的使用方法先定义一个图像基准图像CMvdImageimage1图像修正后的图像CMvdImage image2注意image2是图像修正后的图像。
1. C#
2.
3. if (image1.Width image2.Width image1.Height image2.Height image1.PixelFormat image2.PixelFormat)
4. {
5. CMvdImage diffImage new CMvdImage();
6. diffImage.InitImage(image1.Width,image1.Height, image1.PixelFormat);
7. for (uint row 0; row image1.Height; row)
8. {
9. uint nStep image1.GetImageData(0).nRowStep;
10. for (uint col 0; col nStep; col)
11. {
12. diffImage.GetImageData(0).arrDataBytes[row * nStep col] (byte)Math.Abs(image1.GetImageData(0).arrDataBytes[row * nStep col] -image2.GetImageData(0).arrDataBytes[row * nStep col]);
13. }
14. }
15. return diffImage;
16. }问题根因 不熟悉SDK算子的相关方法。
3.3.6 图像修正图像修正工具的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发图像修正的使用方法 解答 首先将工具实例化、工具参数赋值示例代码如下
1. C#
2.
3. CImageFixtureTool tool new CImageFixtureTool();
4. tool.InputImage inputImage;
5. tool.BasicParam.FixMode MVD_IMGFIX_MODE.MVD_IMGFIX_MODE_HVA;
6. tool.BasicParam.BasePoint new VisionDesigner.ImageFixture.MVD_FIDUCIAL_POINT_F(basePoint, baseAngle);//基准点
7. tool.BasicParam.RunningPoint new VisionDesigner.ImageFixture.MVD_FIDUCIAL_POINT_F(runPoint, runAngle);//运行点
8. tool.Run();问题根因 不熟悉SDK算子的相关方法。
3.3.7 Blob工具Blob工具的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发Blob工具的使用方法 解答 首先将工具实例化、工具参数赋值然后使用位置修正工具进行位置修正最后绘制Blob框。示例代码如下
1. C#
2. CBlobFindTool tool new CBlobFindTool();
3. tool.BasicParam.ShowOutlineStatus true;
4. tool.BasicParam.ShowBlobImageStatus true;
5. tool.InputImage inputImage;
6. if (BlobRoi ! null){ tool.ROI BlobRoi;}
7. tool.SetRunParam(Polarity, BrightObject);//Blob工具参数设置
8. tool.SetRunParam(LowThreshold, 180);
9. tool.SetRunParam(HightThreshold, 255);
10. tool.SetRunParam(MinArea, 5);
11. tool.SetRunParam(MaxArea, 5000);
12. tool.Run();
13. ListCBlobInfo blobInfoList tool.Result.BlobInfo;
14. CPositionFixTool fixTool new CPositionFixTool();//位置修正
15. fixTool.BasicParam.BasePoint new VisionDesigner.PositionFix.MVD_FIDUCIAL_POINT_F(basePoint, baseAngle);
16. fixTool.BasicParam.RunImageSize new MVD_SIZE_I((int)inputImage.Width, (int)inputImage.Height);
17. mvdRenderActivex1.ClearShapes();
18. foreach (var blobInfo in blobInfoList)//绘制blob框数据
19. {
20. CMvdRectangleF rectangleF blobInfo.BoxInfo;
21. rectangleF.BorderColor new MVD_COLOR(0xFF, 0x00, 0x00);
22. rectangleF.BorderWidth 2;
23. fixTool.BasicParam.InitialShape rectangleF;
24. fixTool.BasicParam.RunningPoint new VisionDesigner.PositionFix.MVD_FIDUCIAL_POINT_F(runPoint, runAngle);
25. fixTool.BasicParam.FixMode MVD_POSFIX_MODE.MVD_POSFIX_MODE_HVA;
26. fixTool.Run();
27. mvdRenderActivex1.AddShape(fixTool.Result.CorrectedShape);
28. }问题根因 不熟悉相关接口的使用。
3.3.8 点点测量点点测量工具的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发点点测量工具的使用方法 解答 首先将工具实例化,然后选择两个点,下面以测量两个圆的圆心距为例示例代码如下
1. C#
2.
3. float distance;
4. VisionDesigner.P2PMeasure.CP2PMeasureTool cP2PMeasureTool new VisionDesigner.P2PMeasure.CP2PMeasureTool;
5. cP2PMeasureTool.BasicParam.Point1 cCirFindTool1.Result.CircleCenter;
6. cP2PMeasureTool.BasicParam.Point2 cCirFindTool2.Result.CircleCenter;
7. cP2PMeasureTool.Run();
8. distance cP2PMeasureTool.Result.Dist(); 问题根因 不熟悉相关接口的使用。
3.3.9 亮度测量亮度测量工具的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发亮度测量工具的使用方法 解答 首先将工具实例化,输入图片,最后设置ROI参数,示例代码如下
1. C#
2.
3. VisionDesigner.IntensityTool.CIntensityToolTool cIntensityToolTool newVisionDesigner.IntensityTool.CIntensityToolTool();
4. VisionDesigner.CMvdImage InputImg new CMvdImage();
5. InputImg.InitImage(Input.bmp);
6. cIntensityToolTool.InputImage InputImg;
7. cIntensityToolTool.ROI new VisionDesigner.CMvdRectangleF(InputImg.Width / 2, InputImg.Height / 2, InputImg.Width / 4, InputImg.Height / 4);
8. cIntensityToolToolObj.Run();问题根因 不熟悉相关接口的使用。
3.3.10 圆查找圆查找的方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象WinForm下的算子SDK圆查找的使用方法 解答 WinForm下进行算子SDK开发时圆查找的使用方法 第一步初始化参数列表让用户修改参数。 第二步加载图像设置ROI等参数执行找圆操作。
1. C#
2. //第一步初始化参数
3. try
4. {
5. VisionDesigner.CircleFind.CCircleFindTool m_cCircleFindToolObj newVisionDesigner.CircleFind.CCircleFindTool();
6. //Set input image
7. VisionDesigner.CMvdImage cInputImg new CMvdImage();
8. cInputImg.InitImage(InputTest.bmp);
9. m_cCircleFindToolObj.InputImage cInputImg;
10. // Set ROI region (optional)
11. m_cCircleFindToolObj.ROI new VisionDesigner.CMvdRectangleF(cInputImg.Width / 2, cInputImg.Height / 2, cInputImg.Width / 4, cInputImg.Height / 4);
12. //保存参数设置
13. byte[] fileBytes new byte[256];
14. uint nConfigDataSize 256;
15. uint nConfigDataLen 0;
16. try
17. {
18. m_cCircleFindToolObj.SaveConfiguration(fileBytes, nConfigDataSize, ref nConfigDataLen);
19. }
20. catch (MvdException ex)
21. {
22. if (MVD_ERROR_CODE.MVD_E_NOENOUGH_BUF ex.ErrorCode)
23. {
24. fileBytes new byte[nConfigDataLen];
25. nConfigDataSize nConfigDataLen;
26. m_cCircleFindToolObj.SaveConfiguration(fileBytes, nConfigDataSize, ref nConfigDataLen);
27. }
28. else
29. {
30. throw ex;
31. }
32. }
33. }
34. //第二步加载图片并运行
35. m_cCircleFindToolObj.Run();
36. //输出结果
37. CCircleFindResult circleFindResult m_CircleFindTool.Result;问题原因 参数设置错误
3.3.11 仿射变换图像仿射变换的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象WinForm下的算子SDK图像仿射变换的使用方法 解答 WinForm下进行算子SDK开发时图像仿射变换的使用方法 第一步初始化参数列表修改参数 第二步加载图像使用当前的参数设置运行工具
1. C#
2.
3. //第一步设置参数
4. //定义仿射变换工具对象
5. m_stImageAffineTransformToolObj new CImageAffineTransformTool();
6. //可修改参数
7. byte[] fileBytes new byte[256];
8. uint nConfigDataSize 256;
9. uint nConfigDataLen 0;
10. //保存参数
11. m_stImageAffineTransformToolObj.SaveConfiguration(fileBytes, nConfigDataSize, ref nConfigDataLen);
12. //设置运行参数输入图像ROI面积等运行
13. m_stImageAffineTransformToolObj.BasicParam.Aspect fAspectValue;
14. m_stImageAffineTransformToolObj.InputImage m_stInputImage;
15. m_stImageAffineTransformToolObj.ROIShape cDefaultRect;
16. m_stImageAffineTransformToolObj.Run();
17. //输出结果
18. CMvdImage stOutputImage m_stImageAffineTransformToolObj.Result.OutputImage;问题原因 参数设置错误或者缺少参数设置
3.3.12 直线查找直线查找工具的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象如何进行直线查找 解答 使用直线查找工具进行直线查找在算子SDK开发中工具入口为xxxTool则直线查找的工具入口为CEdgeFindTool首先定义接口对象然后在图片上设置待直线查找的ROI区域最后通过接口函数Run就可以获得直线的相关结果。
1. C#
2. // 创建对象
3. VisionDesigner.EdgeFind.CEdgeFindTool cEdgeFindToolObj new VisionDesigner.EdgeFind.CEdgeFindTool();
4. // 给定输入图片
5. VisionDesigner.CMvdImage cInputImg new CMvdImage();
6. cInputImg.InitImage(..\\InputTest.bmp);
7. cEdgeFindToolObj.InputImage cInputImg;
8. // 设置ROI
9. cEdgeFindToolObj.ROI new VisionDesigner.CMvdRectangleF(cInputImg.Width / 2, cInputImg.Height / 2, cInputImg.Width / 4, cInputImg.Height / 4);
10. // 运行
11. cEdgeFindToolObj.Run();
12. // 获取结果
13. VisionDesigner.EdgeFind.CEdgeFindResult cEdgeFindRes cEdgeFindToolObj.Result;
14. Console.WriteLine(The number of edge: {0}, cEdgeFindRes. SingleEdgeInfo.Count);
15. List lcEdgePtInfo cEdgeFindRes.SingleEdgeInfo;
16. foreach (CEdgeFindSingleEdgeInfo cCurEdgePt in lstEdgePtInfo)
17. {
18. Console.WriteLine(EdgePoint: {0}, Sore{1}, cCurEdgePt.Score);
19. }问题根因 不熟悉直线查找工具的使用。
3.3.13 缺陷检测直线边缘缺陷检测工具的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发直线边缘缺陷检测的使用方法 解答 首先将直线边缘缺陷检测工具实例化然后设置输入图片并选择ROI区域最后获取结果示例代码如下
1. C#
2. VisionDesigner.LineEdgeFlawInsp.CLineEdgeFlawInspTool cLineEdgeFlawInspToolObj new VisionDesigner.LineEdgeFlawInsp.CLineEdgeFlawInspTool();//工具实例化
3. VisionDesigner.CMvdImage InputImg new CMvdImage();
4. InputImg.InitImage(InputTest.bmp);//设置输入图片
5. cLineEdgeFlawInspToolObj.InputImage InputImg;
6. cLineEdgeFlawInspToolObj.ROI new VisionDesigner.CMvdRectangleF(InputImg.Width / 2, InputImg.Height / 2, InputImg.Width / 4, InputImg.Height / 4);//选择ROI区域
7. cLineEdgeFlawInspToolObj.Run();//工具执行
8. VisionDesigner.LineEdgeFlawInsp.CLineEdgeFlawInspResult cLineEdgeFlawInspRes cLineEdgeFlawInspToolObj.Result;//获取结果
9. String message 缺陷数: cLineEdgeFlawInspRes.FlawInfoList.Count.Tostring(); 问题根因 不熟悉相关接口的使用。
3.3.14 N点标定N点标定的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发N点标定的使用方法 解答 首先记录文本输入的坐标图像点a、b与物理点c、d最少需要4组点如图可每输入一组点点击确认输入点个数大于等于4时可点击生成标定文件CalibRuntrue,示例代码如下
1. C#
2. VisionDesigner.NPointCalib.CNPointCalibTool cNPointCalibToolObj new VisionDesigner.NPointCalib.CNPointCalibTool();//工具实例化
3. cNPointCalibToolObj.BasicParam.CameraMode VisionDesigner.NPointCalib.MVD_CAMERA_MODE.MVD_CAMERA_MODE_MOVE;//基本参数设置
4. MVD_CALIB_POINT_F stCalibPoint new MVD_CALIB_POINT_F();
5. stCalibPoint.stImageCoordinate.fX a;
6. stCalibPoint.stImageCoordinate.fY b;//图像点
7. stCalibPoint.stWorldCoordinate.fX c;
8. stCalibPoint.stWorldCoordinate.fY d;//物理点
9. cNPointCalibToolObj.BasicParam.OffsetPointList.Add(stCalibPoint);
10. //至少需要4组点
11. if (cNPointCalibToolObj.BasicParam.OffsetPointList.Count4CalibRuntrue)
12. {
13. cNPointCalibToolObj.Run();//执行
14. VisionDesigner.NPointCalib.CNPointCalibResult cNPointCalibRes cNPointCalibToolObj.Result;//获取标定结果
15. CalibRun false;
16. if(cNPointCalibRes.OffsetPointCalibInfo.HomoEstStatus!0)
17. {
18. cNPointCalibToolObj.ExportCalibFile(E://新建文件夹//calib.iccal);
19. }
20. }问题根因 不熟悉相关接口的使用。
3.3.15 畸变校正畸变校正的使用方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象算子SDK开发畸变校正的使用方法 解答 首先将畸变校正工具实例化,然后设置输入图片并选择标定文件最后获取结果示例代码如下
1. C#
2. VisionDesigner.ImageCorrectCalib.CImageCorrectCalibTool cImageCorrectCalibToolObj new VisionDesigner.ImageCorrectCalib.CImageCorrectCalibTool ();
3. VisionDesigner.CMvdImage cInputImg new CMvdImage();
4. cInputImg.InitImage(InputTest.bmp);
5. cImageCorrectCalibToolObj.InputImage cInputImg;
6. cImageCorrectCalibToolObj.ImportCalibFile(calib.iccal);//选择标定文件
7. cImageCorrectCalibToolObj.Run();
8. VisionDesigner.ImageCorrectCalib.CImageCorrectCalibResult cImageCorrectCalibRes cImageCorrectCalibToolObj.Result;问题根因 不熟悉相关接口的使用。 3.3.16 字符识别多线程同时读取同一个本地模型的方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象多线程如何调用本地同一个模型。 解答 读取本地模型数据在经过深拷贝后使用LoadModelData接口调用模型。
C#
for (int i 0; i 3; i)
{
int temp i;
Task.Factory.StartNew(new Actionobject(t
{
FileStream fs new FileStream(modelpath, FileMode.Open);
long size fs.Length;
byte[] array new byte[size];
fs.Read(array, 0, array.Length);
CNNOCRTool tool new CNNOCRTool(MVD_ALGORITHM_PLATFORM_TYPE.MVD_ALGORITHM_PLATFORM_CPU);
byte[] ModelArray new byte[array.Length];
Array.Copy(array, ModelArray, array.Length);
tool.BasicParam.LoadModelData(ModelArray, ModelArray.Length);
//设置图片等参数
tool.Run();}), temp);
}问题根因 不熟悉多线程同时读取同一个本地模型
3.3.17 字符识别VM自带字符识别模型的区分
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象安装VM和深度学习包之后VM安装路径下的字符识别模块有两个模型lpr_ocr.bin和mvb_ocr.bin分别对应哪个算子。 解答 VM安装路径中字符识别模块中有两个已经训练好的模型lpr_ocr.bin和mvb_ocr.bin分别对应训练平台-字符识别的字符模型类型文本行识别和文本行识别拓展。
在VM中使用字符识别模块两个模型都可以可以调 在算子SDK开发中针对自带的两个模型字符识别算子调用规则是CNNOCRTool算子调用模型lpr_ocr.binCNNCharRecogTool算子调用mvb_ocr.bin。 问题根因 不熟悉字符识别模型。 3.3.18 设置掩膜给模块设置掩膜的方法
描述 环境MVDAlgrithm SDK3.4及以上 VS2013及以上 现象如何给模块设置掩膜针对需要设置多个感兴趣区域及屏蔽区域场景可通过掩膜设置 解答 通过掩膜算子CPreproMaskTool获取掩模图像例如给Blob分析模块设置掩膜示例代码如下
C#
public void SetBlobMask()
{//实例掩膜工具CPreproMaskTool cPrepromaskTool new CPreproMaskTool();//创建Shape链表ListTupleCMvdShape, bool maskList new ListTupleCMvdShape, bool();var rect1 new CMvdRectangleF(rect.CenterX, rect.CenterY, rect.Width - 200, rect.Height - 200);//添加矩形感兴趣区域maskList.Add(new TupleCMvdShape, bool(rect1, false));var poly1 new CMvdPolygonF();poly1.AddVertex(rect.CenterX - rect.Height / 2, rect.CenterY - rect.Width / 2);poly1.AddVertex(rect.CenterX - rect.Height / 2, rect.CenterY - rect.Width / 2 200);poly1.AddVertex(rect.CenterX - rect.Height / 2 200, rect.CenterY - rect.Width / 2);//添加多边形感兴趣区域maskList.Add(new TupleCMvdShape, bool(poly1, false));var poly2 new CMvdPolygonF();poly2.AddVertex(rect.CenterX - rect.Height / 2, rect.CenterY rect.Width / 2);poly2.AddVertex(rect.CenterX - rect.Height / 2, rect.CenterY rect.Width / 2 - 200);poly2.AddVertex(rect.CenterX - rect.Height / 2 200, rect.CenterY rect.Width / 2);//添加多边形屏蔽区域maskList.Add(new TupleCMvdShape, bool(poly2, true));//设置掩膜工具参数cPrepromaskTool.InputImage runImage;cPrepromaskTool.RegionList maskList;//运行掩膜工具cPrepromaskTool.Run();//实例化Blob分析工具CBlobFindTool blobTool new VisionDesigner.BlobFind.CBlobFindTool();blobTool.InputImage runImage;//设置掩膜图像blobTool.RegionImage cPrepromaskTool.OutputImage;blobTool.SetRunParam(LowThreshold, 60);blobTool.SetRunParam(Polarity, BrightObject);blobTool.BasicParam.ShowBlobImageStatus true;//执行Blob算子blobTool.Run();
}问题根因 不熟悉掩膜工具的使用。