cvShowImage错误

时间:2010-11-24 23:48:15

标签: c++ opencv

确定。在SO的帮助下,我设法将这些代码组合在一起。还有一个错误:

    // ...

    std::vector<char> jpegBuffer(lSize);

    // copy the file into the buffer.
    fread(&jpegBuffer[0], 1, jpegBuffer.size(), pFile);

    // terminate
    fclose (pFile);

    Mat matrixJpeg = cv::imdecode(Mat(jpegBuffer), 1);

    IplImage fIplImageHeader = matrixJpeg;

    cvShowImage("Video", fIplImageHeader);
    char key = cvWaitKey();

但是这个代码还有一个错误。就在这条线上:

cvShowImage("Video", fIplImageHeader);

错误是:

/home/richard/Desktop/richard/client/src/main.cc:106: error: cannot convert ‘IplImage’ to ‘const CvArr*’ for argument ‘2’ to ‘void cvShowImage(const char*, const CvArr*)’

根据文档,Mat和IplImage应该是可互换的,并且:

IplImage fIplImageHeader = matrixJpeg;

将Mat转换为IplImage所需的全部内容。

2 个答案:

答案 0 :(得分:2)

我认为应该是:

IplImage* fIplImageHeader = matrixJpeg;

IplImage *和Mat *应该是可以互换的。

答案 1 :(得分:1)

CvArr*void*

的typedef

您必须指定强制类型转换:

csShowImage("Whatever", static_cast<CvArr*>(somePointer));

另请注意,somePointer指针。

您可能会说

IplImage object = matrix;
IplImage* somePointer = &object;

另外,我有点怀疑任意图像类型是否可以用矩阵类型替代。当你告诉你的程序显示矩阵时,你愿意做什么?