Wie kann ich ein IplImage in ein QImage umwandeln?
-
kann mir niemand weiterhelfen??
-
Habe das hier über google gefunden, habe selbes Problem.
Gibt es inzwischen eine Lösung?
-
Hallo,
googeler schrieb:
Habe das hier über google gefunden, habe selbes Problem.
Gibt es inzwischen eine Lösung?Nein, bis jetzt löse ich es noch über die Festplatte.
Was ich jetzt auch schon öfters gelesen habe, ist es mit opengl-funktionen zu machen.mfg
der eine
-
der code auf http://worldant.blog.sohu.com/54848846.html kompiliert schonmal
-
also ich habe sowas gemacht:
IplImage *img; img = cvQueryFrame(capture); int lines = (int)img->height; int rows = (int)img->width; myQImage = new QImage((uchar *) img->imageData, rows, lines,QImage::Format_RGB888); *myQImage = myQImage->rgbSwapped(); //damit die farben stimmen
nun ja, das bild ist dann halt noch auf dem Kopf, aber immerhin funzts!!
-
McLee schrieb:
also ich habe sowas gemacht:
IplImage *img; img = cvQueryFrame(capture); int lines = (int)img->height; int rows = (int)img->width; myQImage = new QImage((uchar *) img->imageData, rows, lines,QImage::Format_RGB888); *myQImage = myQImage->rgbSwapped(); //damit die farben stimmen
nun ja, das bild ist dann halt noch auf dem Kopf, aber immerhin funzts!!
Bei mir funzt das nicht, er findet das Format_RGB888 nicht...
»Format_RGB888« ist kein Element von »QImage«
kann mir bitte jemand helfen?
-
Weiß niemand warum das nicht geht?
Mir scheint er kennt die ganzen RGB*** formate nicht. Andere gehen...
-
Also von RGB888 hab ich auch noch nie was gehört. Schau einfach mal was QImage für Dinge unter Format_ anbietet.
-
Das RGB-Format ist in Qt aus Performancegruenden identisch mit RGBA (beide 4 Byte, nur wird die Alpha-Komponente ignoriert), waehrend OpenCV 1 Byte pro Farbkomponente annimmt.
Versuch's mal so:
IplImage *img= ... QImage *image= new QImage(img->width, img->height, QImage::Format_RGB32); for (int y=0;y<img->height;y++) { unsigned int *dst= (unsigned int*)image->scanLine(y); unsigned char *src= (unsigned char*)img->imageData + y*img->width*3; for (int x=0;x<img->width;x++,src+=3) { *dst++= src[0] | (src[1]<<8) | (src[2]<<16) | (0xff<<24); } }
-
http://doc.trolltech.com/4.4/qimage.html#Format-enum
dort gibt es RGB888???@hellihjb: Es kommt immer ein weißes Bild mit ein paar roten punkten raus... (egal was ich mach)
-
????? schrieb:
http://doc.trolltech.com/4.4/qimage.html#Format-enum
dort gibt es RGB888???und dort noch nicht.
Es kommt immer ein weißes Bild mit ein paar roten punkten raus...
Dann hat Dein IplImage vermutlich einen anderen Aufbau als 24bit BGR.
-
vermutlich...
Und auch einen anderen Aufbau als die anderen Formate die gehen.The following image formats are available in all versions of Qt:
aber du hast recht, dort gibt es sie nicht...