1.0.x-学习Opencv与MFC混合编程之---视频运动检测-阿里云开发者社区

开发者社区> double2li> 正文

1.0.x-学习Opencv与MFC混合编程之---视频运动检测

简介: 源代码地址: http://download.csdn.net/detail/nuptboyzhb/3961668 版本1.0.x新增内容 视频运动检测 Ø 新建菜单项,Learning OpenCV——> OpenCVr入门——>视频运动检测 Ø 菜单项设置如下: Ø 建立类向导 ...
+关注继续查看

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

版本1.0.x新增内容

视频运动检测

Ø 新建菜单项,Learning OpenCV——> OpenCVr入门——>视频运动检测

Ø 菜单项设置如下:


Ø 建立类向导


Ø 编辑代码

voidCCVMFCView::OnMyTestSport()

{

       // TODO: Add your command handler codehere

       //Alt+F8 整理代码

       CvCapture* capture;

       capture = cvCreateCameraCapture(0);//打开摄像头

       if(capture==NULL)

       {

              MessageBox("未检测到摄像头,请检查摄像头安装是否正确");

       }

       else

       {

             

              CString WindowName1="摄像机";

              IplImage *frame1 = 0;//第一帧

              IplImage *frame2 = 0;//第二帧

              IplImage *frame_sub= 0;//相减之后的帧

              IplImage* pImg8u = NULL;//灰度图

        //

              assert(capture != NULL );//如果没有打开,中断

              cvNamedWindow(WindowName1,CV_WINDOW_AUTOSIZE);

              frame1= cvQueryFrame(capture);

              frame_sub=cvCloneImage(frame1);

              while(1)

              {

                     frame2=cvQueryFrame(capture);

                     if(!frame2)

                     {

                            break;

                     }

            cvAbsDiff(frame1,frame2,frame_sub);

                     frame1=cvCloneImage(frame2);

                 cvMoveWindow(WindowName1, 150, 200);

                     cvShowImage(WindowName1,frame_sub);

                    

                     //  建立位图

                     pImg8u =cvCreateImage(cvGetSize(frame_sub),IPL_DEPTH_8U,1);

                     cvCvtColor(frame_sub,pImg8u,CV_BGR2GRAY);  //彩色变灰阶

            //--------------一下是计算直方图-----------------------------

                     IplImage *src;

                     IplImage *histimg = 0;

                     CvHistogram *hist = 0;

                     int hdims = 256;     // 划分HIST的个数,越高越精确

                     src=cvCloneImage(pImg8u);

                     float hranges_arr[] ={0,255};

                     float* hranges =hranges_arr;

                     int bin_w; 

                     float max_val;

                     int i;

                     cvNamedWindow("Histogram", 0 );

                    

                     hist = cvCreateHist( 1,&hdims, CV_HIST_ARRAY, &hranges, 1 ); // 计算直方图

                     histimg= cvCreateImage( cvSize(320,200), 8, 3 );

                     cvZero( histimg );

                     cvCalcHist( &src, hist,0, 0 ); // 计算直方图

                     cvGetMinMaxHistValue( hist,0, &max_val, 0, 0 );  // 只找最大值

                     cvConvertScale(hist->bins, hist->bins,

                            max_val ? 255. /max_val : 0., 0 ); // 缩放 bin 到区间 [0,255]

                     cvZero( histimg );

                     bin_w = histimg->width /hdims;  // hdims: 条的个数,则 bin_w 为条的宽度

                    

                     // 画直方图

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

                     {

                            double val = (cvGetReal1D(hist->bins,i)*histimg->height/255 );

                            CvScalar color =CV_RGB(255,255,0); //(hsv2rgb(i*180.f/hdims);

                            cvRectangle(histimg, cvPoint(i*bin_w,histimg->height),

                                   cvPoint((i+1)*bin_w,(int)(histimg->height- val)),

                                   color, 1, 8,0 );

                     }

                     cvMoveWindow("Histogram",550, 200);

                     cvShowImage( "Histogram",histimg );

                    

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

                     char c = cvWaitKey(1);

                     if( c == 27 )

                     {

                            break;

                     }     

              }

              cvReleaseCapture( &capture );

              cvDestroyWindow(WindowName1);

              cvDestroyWindow("Histogram");

       }

      

}

 

 

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【论文理解】ICCV2021-视频中小目标检测Dogfight
论文地址:https://arxiv.org/abs/2108.02092目标:在无人机飞行过程中捕获的背景杂乱的画面中检测其他无人机挑战:任意的移动(相机移动,目标也移动)小尺寸,只占画面像素的0.05%~0.07%(PASCAL VOC (22.62%) and ImageNet (19.94%))形状变换(拍摄角度不同,拍摄的无人机形状不同)遮挡基于region-proposal的方法无法捕
57 0
Webpack 2 视频教程 005 - Webpack 编译输出日志
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」。 Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲解的。
922 0
Linux平台C编程系列视频教学!(139集)
inux平台C编程系列视频教学!(139集) 建议使用1024X768以上的分辨率!                  Linux C 第一章 了解C语言(1)http://player.
1003 0
【转】VC++/MFC(VC6)开发技术精品学习资料下载汇总 (2011.3.10更新)
from:http://club.topsage.com/thread-361504-1-1.html   Visual C++ (VC) / MFC 电子书下载:Visual C++ 2008 入门经典 (中文版) 下载Windows核心编程 第5版 (Windows via C/C++, 5...
2447 0
动态 | 从零开始快速入门深度强化学习,OpenAI 发布学习资源 Spinning Up
资源包含了易懂的深度强化学习代码示例、习题、文档和教程。
245 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
2870
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载