ошибка cvShowImage - PullRequest
       4

ошибка cvShowImage

0 голосов
/ 25 ноября 2010

Хорошо. С помощью 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 ]

2 голосов
/ 25 ноября 2010

Я думаю, что это должно быть:

IplImage* fIplImageHeader = matrixJpeg;

IplImage * и Mat * должны быть взаимозаменяемыми.

1 голос
/ 25 ноября 2010

CvArr* является typedef для void*

Вы должны указать принудительное преобразование типов:

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

Также обратите внимание, что somePointer - это указатель .

Вы можете сказать что-то вроде

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

Также я сомневаюсь, что произвольный тип изображения заменяется матричным типом. Чего вы хотите достичь, когда говорите своей программе показать матрицу ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...