OpenCV lühikursus: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 6: Line 6:


Täiendatakse harjutustundide käigus
Täiendatakse harjutustundide käigus
=OpenCV=
==CvPoint==
Open CV-s on 5 erinevat punkti klassi, millega võib meelde jäta punkti kordinaate pinnal või ruumis.
Järgnevad näited erinevate punktide loomisest ja seletused nende järel.
<pre>
int main()
{
      CvPoint uus = CvPoint(int x, int y)                          // Maht on vastav protsessori arhitektuurile (tavaliselt 32bit või 64bit). Klass on täisarvulise 2D punkti hoidmiseks mõeldud.
      CvPoint2D32f uus = cvPoint2D32f(float x, float y)            // Maht on 32bit. Klass on komakohaga 2D punkti hoidmiseks mõeldud.
      CvPoint3D32f uus = cvPoint3D32f(float x, float y, float z)    // Maht on 32bit. Klass on komakohaga 3D punkti hoidmiseks mõeldud.
      CvPoint2D64f uus = cvPoint2D64f(double x, double y)          // Maht on 64bit. Klass on komakohaga 2D punkti hoidmiseks mõeldud.
      CvPoint3D64f uus = cvPoint3D64f(double x, double y, double z) // Maht on 64bit. Klass on komakohaga 3D punkti hoidmiseks mõeldud.
     
      return 0;
}
</pre>
==cvLine==
Joone joonistamiseks pinnal kasutatakse cvLine funktsiooni, mis võtab sisse : pildi, alguspunkti, lõpppunkti, värvi (RGB), joone paksuse(pixlites), joone tüübi(0-8), Number of fractional bits in the point coordinates.<br/>
funktsioon: cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int lineType=8, int shift=0)
Näide kuidas laadida pilt ja sellele kriips joonistada:
<pre>
int main(int argc, char *argv[]) // argc - mitu argumenti käsurealt kaasa anti programmi käivitamisel, argv[?] - argumentide massiiv
{
      IplImage* img = cvLoadImage(argv[1]); // proovime laadida pilti kasurealt ette antud asukohast
      if(!img) // kui pilti ei leitud, siis pole mõtet jätkata
      {
            cout << "Pilti ei leitud!" << endl; // teavitame kasutajat, et pilti ei leitud
            exit(0); // ja valjume programmist
      }
      CvPoint algus = cvPoint( (img->width/2), 0); // maarame alguspunkti pildi ülemisse äärde keskele
      CvPoint lopp = cvPoint( (img->width/2), img->height ); // määrame lõpppunkti pildi alumisse äärde keskele
      cvLine(img, algus, lopp, CV_RGB(0,255,0), 1, 8, 0); // joonistame joone
      return 0;
}
</pre>

Revision as of 14:37, 28 February 2010

Sissejuhatus

OpenCV lühikursus on mõeldud ITK robootikaklubi uutele liikmetele pilditöötluse õpetamiseks.


Täiendatakse harjutustundide käigus

OpenCV

CvPoint

Open CV-s on 5 erinevat punkti klassi, millega võib meelde jäta punkti kordinaate pinnal või ruumis. Järgnevad näited erinevate punktide loomisest ja seletused nende järel.

int main()
{
      CvPoint uus = CvPoint(int x, int y)                           // Maht on vastav protsessori arhitektuurile (tavaliselt 32bit või 64bit). Klass on täisarvulise 2D punkti hoidmiseks mõeldud.
      CvPoint2D32f uus = cvPoint2D32f(float x, float y)             // Maht on 32bit. Klass on komakohaga 2D punkti hoidmiseks mõeldud.
      CvPoint3D32f uus = cvPoint3D32f(float x, float y, float z)    // Maht on 32bit. Klass on komakohaga 3D punkti hoidmiseks mõeldud.
      CvPoint2D64f uus = cvPoint2D64f(double x, double y)           // Maht on 64bit. Klass on komakohaga 2D punkti hoidmiseks mõeldud.
      CvPoint3D64f uus = cvPoint3D64f(double x, double y, double z) // Maht on 64bit. Klass on komakohaga 3D punkti hoidmiseks mõeldud.
      
      return 0;
}

cvLine

Joone joonistamiseks pinnal kasutatakse cvLine funktsiooni, mis võtab sisse : pildi, alguspunkti, lõpppunkti, värvi (RGB), joone paksuse(pixlites), joone tüübi(0-8), Number of fractional bits in the point coordinates.
funktsioon: cvLine(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int lineType=8, int shift=0)

Näide kuidas laadida pilt ja sellele kriips joonistada:

int main(int argc, char *argv[]) // argc - mitu argumenti käsurealt kaasa anti programmi käivitamisel, argv[?] - argumentide massiiv
{
      IplImage* img = cvLoadImage(argv[1]); // proovime laadida pilti kasurealt ette antud asukohast
      if(!img) // kui pilti ei leitud, siis pole mõtet jätkata
      {
            cout << "Pilti ei leitud!" << endl; // teavitame kasutajat, et pilti ei leitud
            exit(0); // ja valjume programmist
      }
      CvPoint algus = cvPoint( (img->width/2), 0); // maarame alguspunkti pildi ülemisse äärde keskele
      CvPoint lopp = cvPoint( (img->width/2), img->height ); // määrame lõpppunkti pildi alumisse äärde keskele

      cvLine(img, algus, lopp, CV_RGB(0,255,0), 1, 8, 0); // joonistame joone

      return 0;
}