gpt4 book ai didi

c++ - 将视频从彩色转换为灰度

转载 作者:行者123 更新时间:2023-11-28 03:40:56 26 4
gpt4 key购买 nike

我想读入彩色视频并将输出作为灰度视频。下面是我的代码,它运行得很好,但输出的是我相同颜色的视频。谁能找出问题所在?

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

最佳答案

在我看来,您的问题似乎只是您在“输出视频”窗口中显示的视频实际上是您的“lady walking.avi”输入视频,而不是您输出的视频。

关于c++ - 将视频从彩色转换为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9289705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com