І. Жансүгіров атындағы жму хабаршысы №3 / 2018



Pdf көрінісі
бет10/198
Дата07.01.2022
өлшемі2,57 Mb.
#16935
1   ...   6   7   8   9   10   11   12   13   ...   198
  

ISSN 2616-8901.
  Математика және жаратылыстану-техникалық сериясы
 № 4/ 2018  
 
OpenCV мысалдары. OpenCV кітапханасын пайдалану ауқымы өте кең. Осыған орай бірінші 
мысал ретінде суреттегі геометриялық пішіндерді табатын бағдарлама көрсетілген (сурет 1). 
 
 
Сурет 1. Пішінді анықтау бағдарламасы 
 
Суреттен  көріп  отырғандай,  пайдаланушының  Paint  бағдарламасы  көмегімен  салынған 
суретке  OpenCV  кітапханасымен  жасалған  бағдарлама  толықтай,  әрбір  пиксельді  есептеу 
арқылы  сараптама  жүргізіп,  табылған  геометриялық  пішіндерді  анықтап,  көрсетіп  тұр.  Бұл 
бағдарлама контур класын пайдалана отырып, суретке алдымен сараптама жүргізеді. Сараптама 
нәтижесінде  пайда  болған  сандық  сурет  шуының  көмегімен  суретте  табылған  геометриялық 
пішіндерді жадқа көшіріп, кейін экран бетіне шығарады. 
Бастапқы суретті жүктеу үшін төмендегі код орындалады: 
Image img =  
        new Image(fileNameTextBox.Text) 
        .Resize(400, 400, Emgu.CV.CvEnum.Inter.Linear, true); 
Суретке сараптама жүргізетін код: 
UMat uimage = new UMat(); 
        CvInvoke.CvtColor(img, uimage, ColorConversion.Bgr2Gray); 
UMat pyrDown = new UMat(); 
        CvInvoke.PyrDown(uimage, pyrDown); 
        CvInvoke.PyrUp(pyrDown, uimage); 
Дөңгелек пішінді анықтайтын код: 
#region circle detection 
        Stopwatch watch = Stopwatch.StartNew(); 
        double cannyThreshold = 180.0; 
        double circleAccumulatorThreshold = 120; 
        CircleF[] circles = CvInvoke.HoughCircles(uimage,  
               HoughType.Gradient, 2.0, 20.0, cannyThreshold,  
               circleAccumulatorThreshold, 5); 
            watch.Stop(); 
            msgBuilder.Append(String.Format("Hough 
circles 

{0} 
ms; 
", 
watch.ElapsedMilliseconds)); 
          #endregion 
Сызықты анықтайтын код: 
#region Canny and edge detection 
          watch.Reset(); watch.Start(); 
          double cannyThresholdLinking = 120.0; 
          UMat cannyEdges = new UMat(); 
          CvInvoke.Canny(uimage, cannyEdges, cannyThreshold, cannyThresholdLinking); 
        LineSegment2D[] lines = CvInvoke.HoughLinesP(cannyEdges,  
        1, //Distance resolution in pixel-related units 
        Math.PI/45.0, //Angle resolution measured in radians. 


 



Достарыңызбен бөлісу:
1   ...   6   7   8   9   10   11   12   13   ...   198




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет