It seems the highgui library is the problem. I modified the qtIPL code to only use the cxcore library and the problem went away. This I think solves your problem, but I'm using too many highgui functions to get rid of them so it doesn't really help me. So I guess then that when integrating OpenCV with Qt one should stay away from the highgui functions. Here is the modified code:
#ifndef QTIPL_H
#define QTIPL_H
#include <QImage>
#include <cxcore.h>
IplImage qtToCv
(QImage* qImage
);
QImage cvToQt
(IplImage
* iplImage
);
#endif // QTIPL_H
#ifndef QTIPL_H
#define QTIPL_H
#include <QImage>
#include <cxcore.h>
IplImage qtToCv(QImage* qImage);
QImage cvToQt(IplImage* iplImage);
#endif // QTIPL_H
To copy to clipboard, switch view to plain text mode
#include "qtIPL.h"
IplImage qtToCv
(QImage* qImage
){
IplImage* cvImage;
cvImage = cvCreateImageHeader(cvSize(qImage->width(), qImage->height()), IPL_DEPTH_8U, 4);
cvImage->imageData = (char*)qImage->bits();
IplImage* colorImage = cvCreateImage( cvGetSize(cvImage), 8, 3 );
cvCopy( cvImage, colorImage ); //cvConvertImage was just doing a copy
return *colorImage;
}
QImage cvToQt
(IplImage
* iplImage
) {
cvSave( "tmpImg.bmp", iplImage );
//do something to check if succesful
return img;
}
#include "qtIPL.h"
IplImage qtToCv(QImage* qImage)
{
IplImage* cvImage;
cvImage = cvCreateImageHeader(cvSize(qImage->width(), qImage->height()), IPL_DEPTH_8U, 4);
cvImage->imageData = (char*)qImage->bits();
IplImage* colorImage = cvCreateImage( cvGetSize(cvImage), 8, 3 );
cvCopy( cvImage, colorImage ); //cvConvertImage was just doing a copy
return *colorImage;
}
QImage cvToQt(IplImage* iplImage)
{
cvSave( "tmpImg.bmp", iplImage );
//do something to check if succesful
QImage img("tmpImg.bmp");
return img;
}
To copy to clipboard, switch view to plain text mode
Bookmarks