конвертировать видео из цветного в оттенки серого

Я хотел бы читать в цветном видео и иметь вывод в виде видео в градациях серого. Ниже приведен код, который у меня работает нормально, но на выходе получается видео того же цвета. Кто-нибудь сможет определить проблему?

//Convert a video to grayscale
//argv[1]: input video file
//argv[2]: name of new output file

#include "cv.h"
#include "highgui.h"

int main( int argc, char* argv ) {
CvCapture* capture = cvCaptureFromAVI("C:\\walking\\lady walking.avi");
if(!capture){
    return -1;
}

IplImage *bgr_frame=cvQueryFrame(capture);//Init the video read
double fps = cvGetCaptureProperty (
    capture,
    CV_CAP_PROP_FPS
    );

CvSize size = cvSize(
    (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),
    (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT)
    );

CvVideoWriter *writer = cvCreateVideoWriter(
    "Output video",//filename for new file
    CV_FOURCC('M','J','P','G'),//video codec to compress video stream
    fps,
    size
    );
IplImage* logpolar_frame = cvCreateImage(
    size,
    IPL_DEPTH_8U,
    3
    );
while( (bgr_frame=cvQueryFrame(capture)) != NULL ) {
    cvLogPolar( bgr_frame, logpolar_frame,
        cvPoint2D32f(bgr_frame->width/2,
        bgr_frame->height/2),
        40,
        CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );
    cvWriteFrame( writer, logpolar_frame );
}
cvReleaseVideoWriter( &writer );
cvReleaseImage( &logpolar_frame );
cvReleaseCapture( &capture );

IplImage*image;
CvCapture*recorder = cvCaptureFromAVI("C:\\walking\\lady walking.avi");
cvNamedWindow("Output video",1);
while(1)    {
    image=cvQueryFrame(recorder);   
    if(image==NULL)
    {
        break;
    }
    cvShowImage("Output video",image);
    char c= cvWaitKey(30);
    if(c==27)
    {
        break;
    }

}
cvReleaseCapture( &capture );
cvDestroyWindow( "Output video" );
return 0;
}

person sue-ling    schedule 15.02.2012    source источник


Ответы (1)


Мне кажется, что ваша проблема заключается просто в том, что видео, которое вы показываете в окне «Выходное видео», на самом деле является вашим входным видео «lady walk.avi», а не видео, которое вы выводите.

person Martin B    schedule 15.02.2012
comment
Вау, я этого не понял. Большое спасибо - person sue-ling; 15.02.2012