1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件

简介: 源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr入门——>写视频文件 Ø 菜单项设置如下 Ø 建立类向导 Ø 编辑代码 voidCCV...

源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674

写视频文件


Ø 新建菜单项,Learning OpenCV——> OpenCVr入门——>写视频文件

Ø 菜单项设置如下


Ø 建立类向导

Ø 编辑代码

voidCCVMFCView::OnMyWriteVedio()

{

       // TODO: Add your command handler codehere

       CStringcsAVI="AVI Files(*.avi)|*.avi|";

      

    CStringcsFilter=csAVI;

      

       CStringname[]={"","avi",""};

      

       CStringstrFileName;

       CStringstrExtension;

      

       CFileDialogFileDlg(false,NULL,NULL,OFN_HIDEREADONLY,csFilter);

       //  文件存盘对话框

       if(FileDlg.DoModal()==IDOK ) {        //  选择了文件名

              strFileName= FileDlg.m_ofn.lpstrFile;

              if(FileDlg.m_ofn.nFileExtension == 0) { //  无文件后缀

                     strExtension= name[FileDlg.m_ofn.nFilterIndex];

                     strFileName= strFileName + '.' + strExtension;

                     //  加文件后缀

              }

              int width = 1000, height = 700;

              //-----------------------------------------------------

              CvVideoWriter *vw;

              vw= cvCreateVideoWriter (strFileName,-1,25, cvSize(width,height),1);  //-1可以

              //-----------------------------------------------------

              int line_type = CV_AA; // changeit to 8 to see non-antialiased graphics

              int i;

              CvPoint pt1,pt2,pt_zhb;

              double angle;

              CvSize sz;

              CvPoint  ptt[6];

              CvPoint* pt[2];

              int  arr[2];

              CvFont font;

              CvRNG rng;

              int width3 = width*3, height3 =height*3;

              CvSize text_size;

              int ymin = 0;

              // Load the source image

              IplImage* image = cvCreateImage(cvSize(width,height), 8, 3 );

              IplImage* image2;

             

              // Create a window

              cvNamedWindow(wndnamed, 1 );

              cvZero( image );

              cvShowImage(wndnamed,image);

              cvWriteFrame(vw,image); 

             

              rng = cvRNG((unsigned)-1);

              pt[0] = &(ptt[0]);

              pt[1] = &(ptt[3]);

             

              arr[0] = 3;

              arr[1] = 3;

             

              m_ImageType=-3;

              for (i = 0; i< NUMBER; i++)

              {

                     pt1.x=cvRandInt(&rng) %width3 - width;

                     pt1.y=cvRandInt(&rng) %height3 - height;

                     pt2.x=cvRandInt(&rng) %width3 - width;

                     pt2.y=cvRandInt(&rng) %height3 - height;

                    

                     cvLine( image, pt1, pt2,random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );

                     cvShowImage(wndnamed,image);

                     cvWriteFrame (vw,image); 

                     cvWaitKey(DELAY);

              }

             

              for (i = 0; i< NUMBER; i++)

              {

                     pt1.x=cvRandInt(&rng) %width3 - width;

                     pt1.y=cvRandInt(&rng) %height3 - height;

                     pt2.x=cvRandInt(&rng) %width3 - width;

                     pt2.y=cvRandInt(&rng) %height3 - height;

                    

                     cvRectangle( image,pt1,pt2, random_color(&rng), cvRandInt(&rng)%10-1, line_type, 0 );

                     cvShowImage(wndnamed,image);

                     cvWriteFrame (vw,image); 

                     cvWaitKey(DELAY);

              }

             

              for (i = 0; i< NUMBER; i++)

              {

                     pt1.x=cvRandInt(&rng) %width3 - width;

                     pt1.y=cvRandInt(&rng) %height3 - height;

                     sz.width=cvRandInt(&rng)%200;

                     sz.height=cvRandInt(&rng)%200;

                     angle =(cvRandInt(&rng)%1000)*0.180;

                    

                     cvEllipse( image, pt1, sz,angle, angle - 100, angle + 200,

                            random_color(&rng),cvRandInt(&rng)%10-1, line_type, 0 );

                     cvShowImage(wndnamed,image);

                     cvWriteFrame (vw,image); 

                     cvWaitKey(DELAY);

              }

             

              for (i = 0; i< NUMBER; i++)

              {

                     pt[0][0].x=cvRandInt(&rng)% width3 - width;

                     pt[0][0].y=cvRandInt(&rng)% height3 - height;

                     pt[0][1].x=cvRandInt(&rng)% width3 - width;

                     pt[0][1].y=cvRandInt(&rng)% height3 - height;

                     pt[0][2].x=cvRandInt(&rng)% width3 - width;

                     pt[0][2].y=cvRandInt(&rng)% height3 - height;

                     pt[1][0].x=cvRandInt(&rng)% width3 - width;

                     pt[1][0].y=cvRandInt(&rng)% height3 - height;

                     pt[1][1].x=cvRandInt(&rng)% width3 - width;

                     pt[1][1].y=cvRandInt(&rng)% height3 - height;

                     pt[1][2].x=cvRandInt(&rng)% width3 - width;

                     pt[1][2].y=cvRandInt(&rng)% height3 - height;

                    

                     cvPolyLine( image, pt, arr,2, 1, random_color(&rng), cvRandInt(&rng)%10, line_type, 0 );

                     cvShowImage(wndnamed,image);

                     cvWriteFrame (vw,image); 

                     cvWaitKey(DELAY);

              }

             

              for (i = 0; i< NUMBER; i++)

              {

                     pt[0][0].x=cvRandInt(&rng)% width3 - width;

                     pt[0][0].y=cvRandInt(&rng)% height3 - height;

                     pt[0][1].x=cvRandInt(&rng)% width3 - width;

                     pt[0][1].y=cvRandInt(&rng)% height3 - height;

                     pt[0][2].x=cvRandInt(&rng)% width3 - width;

                     pt[0][2].y=cvRandInt(&rng)% height3 - height;

                     pt[1][0].x=cvRandInt(&rng)% width3 - width;

                     pt[1][0].y=cvRandInt(&rng)% height3 - height;

                     pt[1][1].x=cvRandInt(&rng)% width3 - width;

                     pt[1][1].y=cvRandInt(&rng)% height3 - height;

                     pt[1][2].x=cvRandInt(&rng)% width3 - width;

                     pt[1][2].y=cvRandInt(&rng)% height3 - height;

                    

                     cvFillPoly( image, pt, arr,2, random_color(&rng), line_type, 0 );

                     cvShowImage(wndnamed,image);

                     cvWriteFrame (vw,image); 

                     cvWaitKey(DELAY);

              }

             

              for (i = 0; i< NUMBER; i++)

              {

                     pt1.x=cvRandInt(&rng) %width3 - width;

                     pt1.y=cvRandInt(&rng) %height3 - height;

                    

                     cvCircle( image, pt1,cvRandInt(&rng)%300, random_color(&rng),

                            cvRandInt(&rng)%10-1,line_type, 0 );

                     cvShowImage(wndnamed,image);

                     cvWriteFrame (vw,image); 

                     cvWaitKey(DELAY);

              }

             

              for (i = 1; i< NUMBER; i++)

              {

                     pt1.x=cvRandInt(&rng) %width3 - width;

                     pt1.y=cvRandInt(&rng) %height3 - height;

                    

                     cvInitFont( &font,cvRandInt(&rng) % 8,

                            (cvRandInt(&rng)%100)*0.05+0.1,(cvRandInt(&rng)%100)*0.05+0.1,

                            (cvRandInt(&rng)%5)*0.1,cvRound(cvRandInt(&rng)%10), line_type );

                    

                     cvPutText( image, "Ilove zjq!", pt1, &font, random_color(&rng));

                     cvShowImage(wndnamed,image);

                     cvWriteFrame(vw,image); 

                     cvWaitKey(DELAY);

              }

             

              cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX,3, 3, 0.0, 5, line_type );

             

              cvGetTextSize( "OpenCVforever!", &font, &text_size, &ymin );

             

              pt1.x = (width -text_size.width)/2-80;

              pt1.y = (height +text_size.height)/2-100;

              image2 = cvCloneImage(image);

              pt_zhb.x=pt1.x;

              pt_zhb.y=pt1.y+300;

              for( i = 0; i < 255; i++ )

              {

                     cvSubS( image2,cvScalarAll(i), image, 0 );

                     cvPutText( image,"OpenCV forever!", pt1, &font, CV_RGB(255,i,i));

                     cvPutText( image,"Made By ZhengHB!", pt_zhb, &font, CV_RGB(255,i,i));

                     cvShowImage(wndnamed,image);

                     cvWriteFrame(vw,image); 

                     cvWaitKey(DELAY);

              }

              // Wait for a key stroke; the samefunction arranges events processing

              cvReleaseVideoWriter (&vw);

              cvWaitKey(0);

              cvReleaseImage(&image);

              cvReleaseImage(&image2);

              cvDestroyWindow(wndnamed);

             

       }

      

}

 

from:http://blog.csdn.net/nupt123456789/article/details/7100125

目录
相关文章
|
9月前
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
1308 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
9月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
2636 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
9月前
|
编解码 计算机视觉 Python
Opencv学习笔记(九):通过CV2将摄像头视频流保存为视频文件
使用OpenCV库通过CV2将摄像头视频流保存为视频文件,包括定义视频编码格式、设置保存路径、通过write写入视频文件,并提供了相应的Python代码示例。
414 0
|
11月前
|
计算机视觉
OpenCV滑动条(createTrackbar()函数)如何在多个维度进行同步调整?
这篇文章介绍了如何在OpenCV中使用`createTrackbar()`函数创建多个滑动条以同步调整图像的多个维度(如亮度和对比度),通过将不同滑动条的回调函数合并为一个,确保它们在同一图像基础上进行调整。
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
202 2
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
190 0
|
机器学习/深度学习 开发框架 TensorFlow
### 如何系统化学习OpenCV4
### 如何系统化学习OpenCV4
65 0
|
10月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
128 4
|
10月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制