DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

版本1.0.2新增内容

Ø  全局变量和函数的添加:

在CVMFCview.cpp文件中增加全局变量和全局函数

//-----------------全局变量和函数---------------------------------------

int g_slider_position=0;

CvCapture *g_capture;

void onTrackbarSlide(int pos)

{

   cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);

}

//--效果如下:

注意:上述全局函数,不能作为类得成员变量的形式添加

Ø  改写void CCVMFCView::OnPlAYAVITEST()函数

具体代码如下:

void CCVMFCView::OnPlAYAVITEST()

{

         // TODO: Add your command handler code here

         //郑海波 2011年12月9日

         //参考:learning opencv  Page21

         CString csFilter="AVI Files(*.AVI)|*.AVI||";

         CString strFileName;

 

         CFileDialog FileDlg(true,NULL,NULL,OFN_HIDEREADONLY,csFilter);//  文件存盘对话框

         if (FileDlg.DoModal()==IDOK )

         {         //  选择了文件名

                   strFileName = FileDlg.m_ofn.lpstrFile;

                   if (FileDlg.m_ofn.nFileExtension == 0)

                   {  //  无文件后缀

                            strFileName = strFileName + ".avi";

                            //  加文件后缀

                   }

                   CString WindowName1="Display by CV";//创建窗口的名称

                   cvNamedWindow(WindowName1,CV_WINDOW_AUTOSIZE);//创建窗口

                  //CvCapture *capture =cvCreateFileCapture(strFileName);//由待播放的视频名,创建CvCapture指针

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

                   g_capture =cvCreateFileCapture(strFileName);//由待播放的视频名,创建CvCapture指针

                   int frames=(int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);//得到视频中帧的总数

                   if(frames!=0)

                   {

                            cvCreateTrackbar("position",WindowName1,&g_slider_position,frames,onTrackbarSlide);

                   }

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

                   IplImage *frame;//创建图像指针 用作显示的图片

                   while(1)

                   {

                            frame=cvQueryFrame(g_capture);//从g_capture 获取一帧图像

                            if(!frame)

                            {

                                     break;

                            }

                            cvShowImage(WindowName1,frame);

                            char c=cvWaitKey(33);//等待33毫秒,如果无按键,返回值c=-1。如果有按键,返回按键的ASCII值

                            g_slider_position++;//

            cvCreateTrackbar("position",WindowName1,&g_slider_position,frames,onTrackbarSlide);

            if(c==27)//27是Esc按键的ASCII值

                            {

                                     break;//按下ESc键,停止播放

                            }

                   }

                   cvReleaseCapture(&g_capture);

                   cvDestroyWindow(WindowName1);

         }

}

 

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

posted on   DoubleLi  阅读(347)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示