帮忙解释一下opencv代码,看不懂,希望每句都解释一下,谢谢啦!

void CBgCutSystemDlg::DetectObject( IplImage* img)
{

CvSize size = cvSize(img->width,img->height);
CvMemStorage *stor=NULL;
IplImage* tmp_s=cvCreateImage( size, IPL_DEPTH_8U, 1 );
IplImage *curimg=cvCreateImage( size, IPL_DEPTH_8U, 1 );

CvSeq *tmp_cont;
double timestep = clock()/100.; // 时间戳
IplImage* imgpyr = cvCreateImage( cvSize((size.width & -2)/2, (size.height & -2)/2), 8, 1 );
CvFont font;
cvInitFont(&font,CV_FONT_HERSHEY_DUPLEX ,0.6f,0.6f,0,2,CV_AA);
/*先进行数据的初始化,取第10帧,因为前面的帧有可能不是背景是黑色的这样更保险,也就是认为10帧以后是正常的*/
if( nFrmNum==10 )
{
if (buf)
cvReleaseImage( &buf);
buf = cvCreateImage( size, IPL_DEPTH_8U, 1 );
cvZero( buf );
cvCvtColor( img, buf, CV_BGR2GRAY );

} else if(nFrmNum>10) {

这些代码都解释的这么好了,为什么还需要解释呢。
void CBgCutSystemDlg::DetectObject( IplImage* img) //对话框的检测目标的函数
{

CvSize size = cvSize(img->width,img->height); //获取参数img的图像宽高
CvMemStorage *stor=NULL; //创建内存空间的指针
IplImage* tmp_s=cvCreateImage( size, IPL_DEPTH_8U, 1 ); //创建单通道的8位图像
IplImage *curimg=cvCreateImage( size, IPL_DEPTH_8U, 1 ); //创建单通道的8位图像
CvSeq *tmp_cont; //创建序列的指针
double timestep = clock()/100.; // 定义时间戳
IplImage* imgpyr = cvCreateImage( cvSize((size.width & -2)/2, (size.height & -2)/2), 8, 1 ); //创建imgpyr的图像指针,是降采样的金字塔图像
CvFont font;
cvInitFont(&font,CV_FONT_HERSHEY_DUPLEX ,0.6f,0.6f,0,2,CV_AA);
/*先进行数据的初始化,取第10帧,因为前面的帧有可能不是背景是黑色的这样更保险,也就是认为10帧以后是正常的*/
if( nFrmNum==10 )
{
if (buf)//buf应该是缓存的图像,不知道在哪里定义的,应该是全局的图像指针
cvReleaseImage( &buf); //释放图像
buf = cvCreateImage( size, IPL_DEPTH_8U, 1 ); //重新定义buf为单通道的图像
cvZero( buf ); //清空图像缓存
cvCvtColor( img, buf, CV_BGR2GRAY ); //将传递的图像信息传递给buf,这里才知道img是3通道的彩色图像

} else if(nFrmNum>10) {//如果超过了10帧做什么处理?
温馨提示:答案为网友推荐,仅供参考
相似回答