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

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

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

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——&g ...

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

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø  全局变量和函数的添加: 在CVMFCview.cpp文件 ...

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

    资源源代码:http://download.csdn.net/detail/nuptboyzhb/3961639 版本1.0.1新增内容 Ø  新建菜单项,Learning OpenCV——> ...

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

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr ...

  5. 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961701 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...

  6. 1.1.5-学习Opencv与MFC混合编程之---画图工具 输入文字和填充图像 修改光标

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961696 输入文字 l 对话框 1.    插入,资源,选择对话框资源 2.    编辑对话框如下: ...

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

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961698 Alpha融合菜单项 1.      增加alpha融合菜单项,修改相应的属性,建立类向导 ...

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

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961690 1.    增加‘椭圆’菜单项,设置属性,添加类向导: 2.    编辑消息处理函数, ...

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

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961688 l 对话框 1.“插入”->“资源”->“对话框” 2.对话框属性如下: 双击 ...

随机推荐

  1. Android利用ViewFlipper实现屏幕切换动画效果

    1.屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面:一个个性化设置页面. 2.介绍ViewFilpper类 Vie ...

  2. Java开源内容管理CMS系统J4CMS的几个样式

    www.j4cms.com java 开源内容管理 页面直接编辑 bootstrap3 样式 default 样式 metro 样式 oschina 样式 leblog 样式 foundation 样 ...

  3. dreamvc框架(三),dispartcher做了些什么

    这一篇我会介绍一些dreamvc的核心类Dispatcher都做了些什么,首先我们先来看一看init方法,这是在DispatcherServlet和DispatcherFilter里面都会调用到的一个 ...

  4. 深入浅出Win32多线程设计之MFC的多线程-线程与消息队列(经典)

    1.创建和终止线程 在MFC程序中创建一个线程,宜调用AfxBeginThread函数.该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程. 工作者线程 CWinThread ...

  5. 用Chart控件绘制动态图表

    进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量.ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用.本文仅以VC++为 ...

  6. 【转】关于C语言生成不重复的随机数

    一 说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了.但是新手不这么 干,他们总是抱有疑惑,我就是一个新手,而且较菜…… ...

  7. 关于ActionContext.getContext()的使用方法心得

    这个也是我在另外一位仁兄的博客中看到的,原博客的有点长,我把它精简了一下,算看起来比較方便吧. 为了避免与Servlet API耦合在一起,方便Action类做单元測试,Struts 2对HttpSe ...

  8. parquet 合并元数据

    合并元数据:两个数据集,有着一部分相同的列,将他们合并成一个数据集时merge的过程. 合并的规则:相同的列,在新的数据集中,是通用的列, 各自不同的列,也作为新的数据集的列. Spark将数据写入到 ...

  9. [转]Centos 6.5 优化 一些基础优化和安全设置

    关于CentOS服务器的优化下文作为参考. 本文 centos 6.5 优化 的项有18处: 1.centos6.5最小化安装后启动网卡2.ifconfig查询IP进行SSH链接3.更新系统源并且升级 ...

  10. ZOJ 3607贪心算法

    http://blog.csdn.net/ffq5050139/article/details/7832991 http://blog.watashi.ws/1944/the-8th-zjpcpc/ ...