Изменение размера и отображение изображения - PullRequest
0 голосов
/ 04 февраля 2012

Я пытаюсь изменить размер изображения и затем отобразить его, чтобы проверить, было ли оно изменено или нет.

#include"cv.h"
#include"highgui.h"
#include<iostream>
 using namespace cv;

 int main()
 {
     IplImage* ipl = cvLoadImage("test1.jpg");
     cvShowImage("original:",ipl);
     CvSize size = cvSize(128,128); 
    IplImage* tmpsize=cvCreateImage(size,8,0);   
    cvResize(ipl,tmpsize,CV_INTER_LINEAR);
    cvShowImage("new",tmpsize);

     waitKey(0);
     return 0;
 }

Но выдает ошибку OpenCV Error: Assertion failed == dst.type <>> в неизвестном файле функции c: \ slave \ winInstallerMegaPack \ src \ opencv \ modules \ imgproc \ src \ imgwarp.cpp строка 3210. Пожалуйста, укажите, что я делаю неправильно, и предложите какой-нибудь способ преодолеть это.С другой стороны, другой код работает нормально.

 IplImage *source = cvLoadImage( "test1.jpg");
// Here we retrieve a percentage value to a integer
int percent =50;
// declare a destination IplImage object with correct size, depth and channels
      IplImage *destination = cvCreateImage
( cvSize((int)((source->width*percent)/100) , (int)((source->height*percent)/100) ),
                                     source->depth, source->nChannels );

//use cvResize to resize source to a destination image
cvResize(source, destination);

// save image with a name supplied with a second argument
      cvShowImage("new:",destination);
      waitKey(0);
return 0;

Пожалуйста, объясните.

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

Используете ли вы первый или второй пример кода?

Если вы используете первый, я думаю, у вашего "tmpsize" должно быть столько же каналов, сколько у исходного файла.

0 голосов
/ 05 февраля 2012

в первом примере вы пишете 0 для количества каналов, поэтому измените IplImage * tmpsize = cvCreateImage (size, 8,0);строка IplImage * tmpsize = cvCreateImage (размер, ipl-> глубина, ipl-> nChannels);

...