...
Table of Contents | ||
---|---|---|
|
Console sovellus QT:lla
Kuvan lataaminen
Kuvan lataamiseen löytyy useita eri funktioista jotka löytyvät OpenCV dokumentaatiosta, nämä tehdään yleensä highgui luokalla. OpenCV käyttää Mat datatyyppiä kuville, se on matriisityyppinen datarakenne, jonne kuvat tallennetaan yleensä BGR väriformaatissa.
...
Mat image = imread("kuva.jpg",0); //Ladataan kuva.jpg harmaasävykuvana
blur(image,image,Size(3,3)); //Suodatetaan sitä blur funktiolla 3x3 kokoisella kernelillä
...
Dilate, Erode, Open, Close
Kuvista tunnistaminen
HoughCircles, matchTemplate, findContours käydään läpi ja linkitetään machine learning, findobjects ja features2d luokkien esimerkit. Ehkä liikkuva kuva.
...
cv::Mat _image=imread("esimerkki.jpg");QImage qimg;if(_image.channels()==1) //Katsotaan kuvakanavienvärikanavien määrä, harmaasävy kuvassa 1 ja RGB 3.{
qimg = QImage((uchar*)_image.data,_image.cols,_image.rows,_image.step,QImage::Format_Indexed8);//Kuvan luetaan QImage muotoon, formaatti (*data,width,height,bytesperline,format)}
else if(_image.channels()==3){
cv::cvtColor(_image,_image,CV_BGR2RGB);//Muunnetaan kuva Qt:n käyttämään RGB väriformaattiin.qimg = QImage((uchar*)_image.data,_image.cols,_image.rows,_image.step,QImage::Format_RGB888);}
Kuvan näyttämiseen käyttöliittymässä voidaan käyttää esimerkiksi QGraphicsView tai label widgettiäwidgetteja. Seuraavassa esimerkkikoodissa on yksinkertaisemman label widgetin käyttö.
...
GraphicsView taas on vähän monipuolisempi widget jossa pystytään esittämään 2D kuvaa, siitä pystyy valitsemaan kuva-alueita ja vierittämään suurempiakin kuvia joten sen käyttö on usein suositeltavaa. Sille täytyy ohjelmassa esittää QGraphicsScene, johon kuva päivitetään. GraphicsView seuraa kokoajan scenen muutoksia, joten riittää kuin esittelyn jälkeen riittää, että sceneen päivittää tämän jälkeen uuden kuvan nii se näkyy ruudulla.
scene=new QGraphicsScene(); //Luodaan QGraphicsSceneui->graphicsView->setScene(scene); //Asetetaan scene graphicsView widgettiinscene->addPixmap(QPixmap::fromImage(qimg)); //Piirretään Lisätään kuva sceneen, tätä käytetään myös kuvan päivittämiseen.