2016-06-09 2 views
0

Я пытаюсь определить углы изображения с помощью emguCv. Для этого я использовал метод обнаружения Harris Corner в emguCv. но результат вывода размыт, и с помощью этого метода я не могу получить число углов в изображении. Когда я искал, я нашел код в OpenCvSharp для обнаружения углов, и это даст результат как мое желание. Я попытался преобразовать этот код OpenCvSharp в EmguCv, и я застрял здесь. При преобразовании метода Cv.GoodFeaturesToTrack() в EmguCv. В структуре EmguCv требуется 11 параметров и для последних 4 параметров, что я должен пройти? Кто-нибудь может мне помочь?Угловое обнаружение с использованием EmguCv

OpencvSharp код следующим образом:

IplImage src; 
IplImage gray; 
IplImage eigImg; 

     public void Grascale() 
     { 
      gray = Cv.CreateImage(src.Size, BitDepth.U8, 1); 
      Cv.CvtColor(src, gray, ColorConversion.RgbToGray); 
      Cv.SaveImage("grayimg.jpg", src); 
     } 

     public void DetectCorners() 
     { 
      Grascale(); 
      int cornerCount = 15000000; 


      using (src) 
      using (gray) 
      using (IplImage eigImg = new IplImage(gray.GetSize(), BitDepth.F32, 1)) 
      using (IplImage tempImg = new IplImage(gray.GetSize(), BitDepth.F32, 1)) 

      { 
       CvPoint2D32f[] corners; 
       Cv.GoodFeaturesToTrack(gray, eigImg, tempImg, out corners, ref cornerCount, 0.1, 15); 
       Cv.FindCornerSubPix(gray, corners, cornerCount, new CvSize(3, 3), new CvSize(-1, -1), new CvTermCriteria(20, 0.03)); 

       for (int i = 0; i < cornerCount; i++) 
        Cv.Circle(src, corners[i], 3, new CvColor(0, 0, 255), 2); 

       Cv.SaveImage("result_img.jpg", src); 

      } 
     } 

ответ

0

вам лучший метод использования findcountours. Затем, approxPolyDP, чтобы вы могли получить «углы» (в зависимости от формы), затем cornersSubPix приближает еще больше результатов и применяет некоторые логические контуры для группировки подобных сегментов.

Смежные вопросы