Visionpro汉字喷涂检测

274 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

基于visionpro的字符喷涂效果检测

image.png

mToolBlock.Outputs["Output"].Value = "NG";
  CogToolBlock job1 = mToolBlock.Tools["CogToolBlock1"] as CogToolBlock ;
 CogToolBlock job2 = mToolBlock.Tools["CogToolBlock2"] as CogToolBlock ;
CogOCRMaxTool ocr1 =mToolBlock.Tools["CogOCRMaxTool1"] as CogOCRMaxTool ;
CogOCRMaxTool ocr2 =mToolBlock.Tools["CogOCRMaxTool2"] as CogOCRMaxTool ;
// Run each tool using the RunTool function
foreach(ICogTool tool in mToolBlock.Tools)
  mToolBlock.RunTool(tool, ref message, ref result);
if ((job1.Outputs["OutputString"].Value == "OK") && (job2.Outputs["OutputString"].Value == "OK"))
{
  if ((ocr1.LineResult.Status.ToString()=="Read" ) && (ocr2.LineResult.Status.ToString()=="Read" ))
    
  {
    if ((ocr1.LineResult.Count == 7) && (ocr2.LineResult.Count == 7))
    {
      if (ocr1.LineResult.ResultString.Contains("?"))
      {
      
      }
      else
      {
         mToolBlock.Outputs["Output"].Value = "OK";
      }
    }
  }
}

image.png

 mToolBlock.Outputs["OutputString"].Value = "1";
    CogBlobTool blob1 ;
     CogBlobTool blob2 ;
     CogBlobTool blob3 ;
     CogBlobTool blob4 ;
     CogBlobTool blob5 ;
     CogBlobTool blob6 ;
     CogBlobTool blob7 ;
     CogBlobTool blob8 ;
     CogBlobTool blob9 ;
    blob1 = mToolBlock.Tools["CogBlobTool3"] as CogBlobTool;
      blob2 = mToolBlock.Tools["CogBlobTool5"] as CogBlobTool;
      blob3 = mToolBlock.Tools["CogBlobTool4"] as CogBlobTool;
      blob4 = mToolBlock.Tools["CogBlobTool2"] as CogBlobTool;
      blob5 = mToolBlock.Tools["CogBlobTool1"] as CogBlobTool;
      blob6 = mToolBlock.Tools["CogBlobTool6"] as CogBlobTool;
      blob7 = mToolBlock.Tools["CogBlobTool7"] as CogBlobTool;
      blob8 = mToolBlock.Tools["CogBlobTool8"] as CogBlobTool;
      blob9 = mToolBlock.Tools["CogBlobTool9"] as CogBlobTool;
      double max1 = blob1.Results.GetBlobs()[0].Area;
      double max2 = blob2.Results.GetBlobs()[0].Area;
      double max3 = blob3.Results.GetBlobs()[0].Area;
      double max4 = blob4.Results.GetBlobs()[0].Area;
    double min1 = blob1.Results.GetBlobs()[11].Area;
    double min2 = blob2.Results.GetBlobs()[9].Area;
    double min3 = blob3.Results.GetBlobs()[6].Area;
    double min4 = blob4.Results.GetBlobs()[13].Area;
    string a,b,c ,d,e;
    a = "";
   
    b = "";
 
    c = "";
   
    d = "";
   
    e = "";
 
    // Run each tool using the RunTool function
    foreach(ICogTool tool in mToolBlock.Tools)
      mToolBlock.RunTool(tool, ref message, ref result);

    if(( blob1.Results.GetBlobs().Count == blob6.Results.GetBlobs().Count) && ( blob2.Results.GetBlobs().Count == blob7.Results.GetBlobs().Count)&& ( blob3.Results.GetBlobs().Count == blob8.Results.GetBlobs().Count) && ( blob4.Results.GetBlobs().Count == blob9.Results.GetBlobs().Count)&& ( blob5.Results.GetBlobs().Count == 2))
    {
      for (int i = 0; i <  blob6.Results.GetBlobs().Count; i++)
      {
        
        if ( Math.Abs(blob1.Results.GetBlobs()[i].Area -blob6.Results.GetBlobs()[i].Area )<500)
        {
          a = "1";
        }
       
        
        else
        {
          mToolBlock.Outputs["OutputString"].Value = "a";
        }
        
      }
      for (int i = 0; i < blob7.Results.GetBlobs().Count; i++)
      {
        
        if  ( Math.Abs(blob2.Results.GetBlobs()[i].Area - blob7.Results.GetBlobs()[i].Area) < 500)
        {
          b = "1";
        }
       
        
        else
        {
          mToolBlock.Outputs["OutputString"].Value = "b";
        }
        
      }
      for (int i = 0; i < blob8.Results.GetBlobs().Count; i++)
      {
        
        if   ( Math.Abs(blob3.Results.GetBlobs()[i].Area - blob8.Results.GetBlobs()[i].Area) < 500)
        {
          c = "1";
        }
       
        
        else
        {
          mToolBlock.Outputs["OutputString"].Value = "c";
        }
        
      }
      for (int i = 0; i < blob9.Results.GetBlobs().Count; i++)
      {
        
        if  ( Math.Abs(blob4.Results.GetBlobs()[i].Area - blob9.Results.GetBlobs()[i].Area) < 500)
        {
          d = "1";
        }
       
        
        else
        {
          mToolBlock.Outputs["OutputString"].Value = "d";
        }
        
      }
      if ((Math.Abs(blob5.Results.GetBlobs()[0].Area-1042) <500 ) && (Math.Abs(blob5.Results.GetBlobs()[1].Area-950) <500 ))
      {
        e = "1";
      }
      else
      {
       mToolBlock.Outputs["OutputString"].Value = "e";
      }
      
    }
    else
    {
     mToolBlock.Outputs["OutputString"].Value = "2";
    }
    if ((a=="1" )&&(  b=="1" )&&( c=="1") && (d=="1" )&&( e =="1"))
    {
     mToolBlock.Outputs["OutputString"].Value = "OK";
    }
    else
    {
    mToolBlock.Outputs["OutputString"].Value = "3";
    }
    

本篇文章只介绍代码,详细的步骤将在先后续开始讲解