从文件夹加载文件并保存到另一个文件夹

时间:2012-11-13 13:12:11

标签: c++ qt opencv

我使用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图像时,它们与原始文件完全不同。错误在哪里? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

currentImage->imageData = (char*)image;

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

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

为了使用缓冲区。 另外,您使用固定值创建currentImage,也许最好使用

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

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