convert video from colour to grayscale

落花浮王杯 提交于 2019-12-25 03:24:29

问题


I would like to read in a colour video and have the output as a grayscale video. Below is the code that I have which runs just fine but the output is my same colour video. Would anyone be able to identify the problem?

//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;
}

回答1:


Looks to me as if your problem is simply that the video you're displaying in the "Output video" window is actually your "lady walking.avi" input video, not the video you output.



来源:https://stackoverflow.com/questions/9289705/convert-video-from-colour-to-grayscale

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!