您的位置:首页 > 运维架构

OpenCV笔记之一:将RGB视频转换为灰度输出并在窗口显示

2014-04-04 10:53 441 查看
#include "highgui.h"
#include "cv.h"

int main(int argc, char** argv)
{
CvCapture* capture = NULL;
IplImage* bgr_frame = NULL;

capture = cvCreateFileCapture( "viplanedeparture.avi" );//初始化CvCapture结构。
if ( !capture )
{
return -1;
}

cvNamedWindow("Original",CV_WINDOW_AUTOSIZE);
cvNamedWindow("RGB2GRAY",CV_WINDOW_AUTOSIZE);

bgr_frame = cvQueryFrame(capture);// 提取视频流帧

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 ) );
/*
用cvCreateVideoWriter创建写AVI文件的容器时,当它的第二个参数是-1时,弹出对话框,
选择压缩编码方式,然后写avi视频正确,并且能打开。

CV_FOURCC('P','I','M','1') = MPEG-1 codec
CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well)
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
      CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
      CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec  失败
CV_FOURCC('X', 'V', 'I', 'D') = MPEG-4 codec  成功
      CV_FOURCC('U', '2', '6', '3') = H263 codec
      CV_FOURCC('I', '2', '6', '3') = H263I codec
      CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
*/

//设定尺寸和图像数据精度以及每个像素的通道数
IplImage* gray_frame = cvCreateImage( size, IPL_DEPTH_8U, 1);

while( (bgr_frame = cvQueryFrame( capture )) != NULL )
{
cvShowImage("Original", bgr_frame );

cvCvtColor( bgr_frame, gray_frame, CV_BGR2GRAY );

gray_frame->origin=1;//视频与原视频方向一致,图像原点位置: 0表示顶-左结构,1表示底-左结构

cvShowImage("RGB2GRAY", gray_frame);

char c=cvWaitKey(33);   //自动刷新
if(c==27) break;        //响应键盘按键
}

//销毁窗口
cvDestroyWindow("Original");
 
cvDestroyWindow("RGB2GRAY");

cvDestroyAllWindows();

//释放图像

cvReleaseImage( &gray_frame );

cvReleaseCapture(&capture);

return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv 视频 vc rgb