cvShowImage Fenster aus QT heraus aufrufen [solved]
Verfasst: 22. Januar 2009 12:35
Ich habe eine Frage bzgl. OpenCV und QT.
Meine Funktion soll ein einfaches Histogram eines Graubildes erzeugen.
Dies macht es auch und ich kann das Histogram auch per OpenCV Funktion "cvSaveImage" als Bild speichern.
Aber es lässt sich nicht per OpenCV Funktion "cvShowImage" auf dem Bildschirm anzeigen.
Eigentlich sollte ein cvShowImage Fenster aus einer QT Anwendung heraus doch aufrufbar sein, oder?
Woran kann es liegen, dass kein Fenster mit Bild via cvShowImage angezeigt wird?
Meine Funktion soll ein einfaches Histogram eines Graubildes erzeugen.
Dies macht es auch und ich kann das Histogram auch per OpenCV Funktion "cvSaveImage" als Bild speichern.
Aber es lässt sich nicht per OpenCV Funktion "cvShowImage" auf dem Bildschirm anzeigen.
Eigentlich sollte ein cvShowImage Fenster aus einer QT Anwendung heraus doch aufrufbar sein, oder?
Code: Alles auswählen
CvHistogram* hist;
IplImage* image= 0;
IplImage* imgHistogram = 0;
IplImage* gray= 0;
void createHistogram() {
image = cvLoadImage("0_image_gray.png",1);
int bins = 256;
int hsize[] = {bins};
float max_value = 0, min_value = 0;
float value;
int normalized;
float xranges[] = { 0, 256 };
float* ranges[] = { xranges };
gray = cvCreateImage( cvGetSize(image), 8, 1 );
cvCvtColor( image, gray, CV_BGR2GRAY );
IplImage* planes[] = { gray };
hist = cvCreateHist( 1, hsize, CV_HIST_ARRAY, ranges,1);
cvCalcHist( planes, hist, 0, NULL);
cvGetMinMaxHistValue( hist, &min_value, &max_value);
imgHistogram = cvCreateImage(cvSize(bins, 50),8,1);
cvRectangle(imgHistogram, cvPoint(0,0), cvPoint(256,50), CV_RGB(255,255,255),-1);
for(int i=0; i < bins; i++) {
value = cvQueryHistValue_1D( hist, i);
normalized = cvRound(value * 50 / max_value);
cvLine(imgHistogram,cvPoint(i,50), cvPoint(i,50-normalized), CV_RGB(0,0,0));
}
cvNamedWindow("histogram",CV_WINDOW_AUTOSIZE);
// funktioniert nicht !!
cvShowImage( "histogram", imgHistogram );
// funktioniert
cvSaveImage("0_histo.png", imgHistogram);
}