OpenCV lühikursus: Difference between revisions
New page: =Sissejuhatus= OpenCV lühikursus on mõeldud ITK robootikaklubi uutele liikmetele pilditöötluse õpetamiseks. Täiendatakse harjutustundide käigus |
|||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Robootika]] | |||
=Sissejuhatus= | =Sissejuhatus= | ||
Line 5: | Line 6: | ||
Täiendatakse harjutustundide käigus | Täiendatakse harjutustundide käigus | ||
==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. | |||
<source lang="cpp"> | |||
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; | |||
} | |||
</source> | |||
==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: | |||
<source lang="cpp"> | |||
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; | |||
} | |||
</source> | |||
==teksti kirjutamine pildile- cvPutText== | |||
<source lang="cpp"> | |||
CvFont font; | |||
//fondi suurus | |||
double hScale=0.5; | |||
double vScale=0.5; | |||
//teksti paksus | |||
int lineWidth=2; | |||
//fondi initsialiseerimine(fondi struktuur, font, kõrgus, laius, kalle(float), paksus) | |||
cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC, hScale,vScale,0,lineWidth); | |||
//teksti kirjutamine (pilt, tekst, asukoht(esitähe alumine vasak nurk), font, värv) | |||
cvPutText (img,"My comment",cvPoint(200,400), &font, cvScalar(255,255,0)); | |||
</source> | |||
==Näited== | |||
Näide kuidas kaamera abil purke leida. Leiab suurima pindalaga purgi kindlal kõrgusel. | |||
[http://enos.itcollege.ee/~ttanav/cpp/main_video_t66tab.cpp leia purke] | |||
==QTcreatori projektifaili tuleb lisada== | |||
<pre> | |||
LIBS += -L/usr/lib -lcv -lhighgui -lcvaux -lml -lcxcore | |||
INCLUDEPATH += /usr/include/opencv | |||
</pre> | |||
==linke== | |||
[http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/ref/OpenCVRef_ImageProcessing.htm Image Processing and Analysis Reference(seletustega funktsioonide loend)] |
Latest revision as of 16:11, 25 April 2010
Sissejuhatus
OpenCV lühikursus on mõeldud ITK robootikaklubi uutele liikmetele pilditöötluse õpetamiseks.
Täiendatakse harjutustundide käigus
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;
}
teksti kirjutamine pildile- cvPutText
CvFont font;
//fondi suurus
double hScale=0.5;
double vScale=0.5;
//teksti paksus
int lineWidth=2;
//fondi initsialiseerimine(fondi struktuur, font, kõrgus, laius, kalle(float), paksus)
cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC, hScale,vScale,0,lineWidth);
//teksti kirjutamine (pilt, tekst, asukoht(esitähe alumine vasak nurk), font, värv)
cvPutText (img,"My comment",cvPoint(200,400), &font, cvScalar(255,255,0));
Näited
Näide kuidas kaamera abil purke leida. Leiab suurima pindalaga purgi kindlal kõrgusel.
QTcreatori projektifaili tuleb lisada
LIBS += -L/usr/lib -lcv -lhighgui -lcvaux -lml -lcxcore INCLUDEPATH += /usr/include/opencv
linke
Image Processing and Analysis Reference(seletustega funktsioonide loend)