2013-11-23 16 views
5

Fondamentalmente sto insegnando a me stesso C++ e parte della funzione del programma sarà di aprire e chiudere un'immagine specificata. Come potrei fare questo? O quale risorsa dovrei usare?Apertura e visualizzazione di un'immagine in C++?

Grazie!

+1

Il modo più semplice sarebbe utilizzare alcuni framework come Qt che ha già tutte le librerie necessarie per lavorare con le immagini. – cen

risposta

7

In C++ (senza alcuna libreria aggiuntiva) è possibile aprire un'immagine. Ma non ci sarà nulla di particolarmente utile tranne un mucchio di dati binari. allora devi usare il tuo decoder. Se si utilizza opencv è possibile scrivere ad aprire un'immagine e visualizzarla:

Mat m("fileName"); 
imshow("windowName",m); 

di fare lo stesso con una libreria generale perpouse come qt è possibile utilizzare questo codice:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QGraphicsScene scene; 
    QGraphicsView view(&scene); 
    QGraphicsPixmapItem item(QPixmap("c:\\test.png")); 
    scene.addItem(&item); 
    view.show(); 
    return a.exec(); 
} 

Per saperne di più sul widget imageviewer vai su here. Oppure si può dare un'occhiata a here da visualizzare come visualizzazione grafica.

2

Per una libreria crossplatform, opensource e molto buona è possibile utilizzare libmagick ++.

-2

modificato campione Ciao Mondo da OpenCV 2 Computer Vision Application Programming Cookbook esecuzione in VS 2012 console Win32 app

o official OpenCV (Open Source) sample

avvertimento: installazione di Win OpenCV-2.4.10.exe è 360 MB che hanno molte caratteristiche di anticipo e hanno codice di esempio, doc e binari compilati anche in Python e Java x86 e 64

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp>  

int main() 
{   
    // read an image 
    cv::Mat image= cv::imread("img.jpg"); 
    // create image window named "My Image" 
    cv::namedWindow("My Image"); 
    // show the image on window 
    cv::imshow("My Image", image); 
    // wait key for 5000 ms 
    cv::waitKey(5000); 

    return 0; 
}