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;

これは確かに非常に疑わしいです。を に変換しQImage*ていchar*ます。最初に行うことは、に変更することです

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

バッファを使用するため。もう1つ、currentImage固定値で作成しています。使用する方が良いかもしれません

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

これはqt部分です。まだまだ足りないかもしれません。

于 2012-11-13T13:20:10.367 に答える