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

源代码地址: 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

时间: 2025-01-21 06:42:38

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

1.0.2-学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条

源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø  全局变量和函数的添加: 在CVMFCview.cpp文件中增加全局变量和全局函数 //-----------------全局变量和函数--------------------------------------- int g_slider_position=0; CvCapture *g_capture; void onTrackbarSlide(int

1.0.1-学习Opencv与MFC混合编程之---播放AVI视频

资源源代码:http://download.csdn.net/detail/nuptboyzhb/3961639 版本1.0.1新增内容 Ø  新建菜单项,Learning OpenCV--> OpenCVr入门-->播放AVI视频. Ø  为' 播放AVI视频'菜单项设置属性如下: Ø  为上述菜单项建立类向导,设置如下: Ø  编辑代码: 代码具体如下 void CCVMFCView::OnPlAYAVITEST() {          // TODO: Add your command

1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头

源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV--> OpenCVr入门-->打开摄像头(c) Ø 菜单项设置如下: Ø 建立类向导 Ø 编辑代码 void CCVMFCView::OnMyOpenCamera() {       // TODO: Add your command handler code here       //Alt+F8 整

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

源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV--> OpenCVr入门-->写视频文件 Ø 菜单项设置如下 Ø 建立类向导 Ø 编辑代码 voidCCVMFCView::OnMyWriteVedio() {        // TODO: Add your command handler codehere        CStringcsAVI="AVI F

1.1.4-学习Opencv与MFC混合编程之---画图工具 画椭圆

源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961690 1.    增加'椭圆'菜单项,设置属性,添加类向导: 2.    编辑消息处理函数,设置画图变量标识my_draw_flag为5,并读取对话框里的数据. 3.    修改OnMouseMove消息处理函数. 3.1增加变量CvSize  CvSize EllipseSize; 3.2           case 5的编程:          case 5:            

1.1.0-学习Opencv与MFC混合编程之---全屏截图,保存为BMP图像(并增加快捷键)

源代码:http://download.csdn.net/detail/nuptboyzhb/3961677 Ø  添加全屏截图菜单项,菜单项的属性如下; Ø  为该菜单项建立类向导. 编辑消息处理函数如下 voidCCVMFCView::OnPrintscreen() {                   CRect rect;          //HBITMAP hMap;          rect.left = 0;          rect.top = 0;          r

1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形

源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961685 画图工具 1.     画直线 Ø  增加'直线'菜单项,建立类向导: Ø  对CXXXXXXView类增加成员变量my_draw_flag.并在构造函数中初始化为0 Ø  在'直线'菜单项处理函数中,将my_draw_flag=1:表示画直线 Ø  增加window消息处理,WM_LBUTTONDOWN 和WM_MOUSEMOVE和WM_LBUTTONUP Ø  增加成员变量 在构

1.1.6-学习Opencv与MFC混合编程之---播放WAV音乐和 alpha融合功能

源代码:http://download.csdn.net/detail/nuptboyzhb/3961698 Alpha融合菜单项 1.      增加alpha融合菜单项,修改相应的属性,建立类向导,编辑消息处理函数. 2.      在消息处理函数中添加如下代码 void CCVMFCView::OnAlphaMix() { //TODO: Add your command handler code here //TODO: Add your command handler code her

1.1.3-学习Opencv与MFC混合编程之---画图工具 通过对话框进行工具的参数设置 画曲线 绘图校正

源代码:http://download.csdn.net/detail/nuptboyzhb/3961688 l 对话框 1."插入"->"资源"->"对话框" 2.对话框属性如下: 双击对话框,建立对话框类.取名:LineParameter 3.在LineParameter.h头文件中添加#include "resource.h",否则:会报错:IDD_DIALOG4未定义 4.为LineParameter类增加