Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Mat image = imread("kuva.jpg",0); //Ladataan kuva.jpg harmaasävykuvana

blur(image,image,Size(3,3)); //Suodatetaan sitä blur funktiolla 3x3 kokoisella kernelillä

...

 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 QGraphicsScene
 ui->graphicsView->setScene(scene); //Asetetaan scene graphicsView widgettiin
 scene->addPixmap(QPixmap::fromImage(qimg)); //Piirretään Lisätään kuva sceneen, tätä käytetään myös kuvan päivittämiseen.