1

我正在使用 opencv(2.3 版)和 qt(4.8 版)使用 Visual c++ 编写,我在从文件夹加载文件(jpg 图像)并保存到另一个文件夹时遇到了一些问题。这是我的代码:

for (uint i = 0; i < numFiles; i += (numFiles / numBoards) ){

    QString str = "D:/TESI_Magistrale/Linescanner/imm_aquisition/image" + QString::number(i + 1) + ".jpg";
    QImage *image=new QImage();
    image->load(str);


    IplImage *currentImage = cvCreateImageHeader(cv::Size(640,480),IPL_DEPTH_8U,1);//1 channel xk b&w (solo brightness)
    currentImage->imageData = (char*)image;

    QString str1 = "D:/TESI_Magistrale/Linescanner/imm_calibration/image" + QString::number(i + 1) + ".jpg";
    QByteArray ba1 = str1.toLatin1();
    const char *text1 = ba1.data();
    cvSaveImage(text1,currentImage);


}

问题是当我打开保存文件夹(imm_calibration)中的jpg图像时,它们与原始图像完全不同。错误在哪里?提前致谢。

4

1 回答 1

1
currentImage->imageData = (char*)image;

这当然是非常可疑的。您正在将 a 转换QImage*为 a char*。首先要做的是更改为

currentImage->imageData = image->bits();

为了使用缓冲区。另一件事,您正在currentImage使用固定值创建,也许最好使用

cvCreateImageHeader(cv::Size(image->width(),image->height(),....)

这是针对 qt 部分的。可能还不够。

于 2012-11-13T13:20:10.367 回答