帮忙解释opencv程序,希望每句都解释一下,真心不懂,谢啦!

//判断是否停车if(flag_tc){if(r.x+r.width/2>rect_tc.x&&r.x+r.width/2<rect_tc.x+rect_tc.width... //判断是否停车
if (flag_tc)
{
if (r.x+r.width/2>rect_tc.x&&r.x+r.width/2<rect_tc.x+rect_tc.width
&&r.y+r.height/2>rect_tc.y&&r.y+r.height/2<rect_tc.y+rect_tc.height)
{
tc_times++;
//如果连续80帧都停在那则给出警报
if (tc_times>80)
{
//输出提示
cvPutText(img,"Illegal parking",cvPoint(r.x,r.y),&font,CV_RGB(255,0,0));
}
}
}
//红灯
if (flag_hd)
{
if (r.x+r.width/2>rect_hd.x&&r.x+r.width/2<rect_hd.x+rect_hd.width
&&r.y+r.height/2>rect_hd.y&&r.y+r.height/2<rect_hd.y+rect_hd.height)
{
hd_times++;
if (nFrmNum>725&&nFrmNum<740)
{
//输出提示
cvPutText(img,"Running the red light",cvPoint(r.x,r.y),&font,CV_RGB(255,0,0));

}
}
}
}

}
}
// free memory
if (stor)
cvReleaseMemStorage(&stor);
cvReleaseImage( &imgpyr );
cvReleaseImage(&tmp_s);
cvReleaseImage(&curimg);
}

void CBgCutSystemDlg::Track()
{
SetTimer(1,33,NULL);

}
void CBgCutSystemDlg::OnTimer(UINT nIDEvent)
{
IplImage* image;
IplImage* dst = 0;
if( !cvGrabFrame( pCapture ))//捕捉一桢
{
cvReleaseCapture( &pCapture );
return;
}
image = cvRetrieveFrame( pCapture );//取出这个帧
if( image )//若取到则判断motion是否为空
{
if( !dst )
{
dst = cvCreateImage( cvSize(image->width,image->height), 8, 1 );
//创建motion帧,八位,一通道
cvZero( dst );
//零填充motion
dst->origin = image->origin;
}
}

nFrmNum++;
m_progress.SetPos(nFrmNum);
//设置提示信息
CString str;
str.Format("%d",nFrmNum);
GetDlgItem(IDC_FRAMNUM)->SetWindowText(str);

double tt =(double)cvGetTickCount();
DetectObject( image);//更新历史图像
show_pic(image,IDC_SHOWIMG);
tt=(double)cvGetTickCount()-tt;
str.Format("%lf",tt/(cvGetTickFrequency()*1000.));
GetDlgItem(IDC_TIME)->SetWindowText(str);

CDialog::OnTimer(nIDEvent);
}
void CBgCutSystemDlg::OnStartTrack()
{
Track();
}
void CBgCutSystemDlg::OnStop()
{
// TODO: Add your control notification handler code here
m_stop=!m_stop;
if (m_stop)
{
KillTimer(1);
} else {
SetTimer(1,33,NULL);
}
}

void CBgCutSystemDlg::OnOK()
{
// TODO: Add extra validation here
if (pCapture)
cvReleaseCapture( &pCapture );
CDialog::OnOK();
}
HBRUSH CBgCutSystemDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if (pWnd->GetDlgCtrlID() == IDC_FRAMNUM)
{
pDC->SetTextColor(RGB(255,0, 0));
}

if (pWnd->GetDlgCtrlID() == IDC_TIME)
{
pDC->SetTextColor(RGB(255, 0, 0));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CBgCutSystemDlg::OnButton2()
{
// TODO: Add your control notification handler code here
m_ys =!m_ys;
}
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
haiyangfenghuo
推荐于2016-08-26 · TA获得超过2439个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:810万
展开全部
//判断是否停车
if (flag_tc) //这应该是个停车的违法标示,自定义的
{
if (r.x+r.width/2>rect_tc.x&&r.x+r.width/2<rect_tc.x+rect_tc.width
&&r.y+r.height/2>rect_tc.y&&r.y+r.height/2<rect_tc.y+rect_tc.height) //这里做了边界处理,确保处理的是矩形的范围之内的图像
{
tc_times++; //测时间?变量的定义没看到
//如果连续80帧都停在那则给出警报
if (tc_times>80)
{
//输出提示
cvPutText(img,"Illegal parking",cvPoint(r.x,r.y),&font,CV_RGB(255,0,0));//在图像的r.x,r.y上写上文本Illegal parking
}
}
}
//红灯
if (flag_hd) //这应该是个闯红灯的违法标示,自定义的
{
if (r.x+r.width/2>rect_hd.x&&r.x+r.width/2<rect_hd.x+rect_hd.width
&&r.y+r.height/2>rect_hd.y&&r.y+r.height/2<rect_hd.y+rect_hd.height) //这里做了边界处理,确保处理的是矩形的范围之内的图像
{
hd_times++;//测时间?变量的定义没看到
if (nFrmNum>725&&nFrmNum<740) //帧数在725到740之间的话
{
//输出提示
cvPutText(img,"Running the red light",cvPoint(r.x,r.y),&font,CV_RGB(255,0,0));//在图像的r.x,r.y上写上文本Running the red light

}
}
}
}

}
}
// free memory
if (stor) //这个是申请的内存空间,stor是通过CreateMemStorage(0)申请的
cvReleaseMemStorage(&stor);
cvReleaseImage( &imgpyr ); //释放图像
cvReleaseImage(&tmp_s);//释放图像
cvReleaseImage(&curimg);//释放图像
}

void CBgCutSystemDlg::Track()//跟踪的实现
{
SetTimer(1,33,NULL);//设定一个定时器,33ms

}
void CBgCutSystemDlg::OnTimer(UINT nIDEvent) //触发定时器
{
IplImage* image; //定义iplimage格式图像
IplImage* dst = 0; //定义iplimage格式图像
if( !cvGrabFrame( pCapture ))//捕捉一桢
{
cvReleaseCapture( &pCapture );//释放pCapture
return;
}
image = cvRetrieveFrame( pCapture );//取出这个帧
if( image )//若取到则判断motion是否为空
{
if( !dst )
{
dst = cvCreateImage( cvSize(image->width,image->height), 8, 1 );
//创建motion帧,八位,一通道
cvZero( dst );
//零填充motion
dst->origin = image->origin;
}
}

nFrmNum++;
m_progress.SetPos(nFrmNum); //进程标识在位置为nFrmNum上
//设置提示信息
CString str;
str.Format("%d",nFrmNum); //写入界面的窗口上
GetDlgItem(IDC_FRAMNUM)->SetWindowText(str);

double tt =(double)cvGetTickCount();//计时
DetectObject( image);//更新历史图像
show_pic(image,IDC_SHOWIMG);//显示图像
tt=(double)cvGetTickCount()-tt;
str.Format("%lf",tt/(cvGetTickFrequency()*1000.));//显示时间在控件上
GetDlgItem(IDC_TIME)->SetWindowText(str);

CDialog::OnTimer(nIDEvent);
}
void CBgCutSystemDlg::OnStartTrack() //点击按钮触发跟踪的函数体调用
{
Track();
}
void CBgCutSystemDlg::OnStop() //点击按钮触发停止的函数
{
// TODO: Add your control notification handler code here
m_stop=!m_stop;
if (m_stop)//定时器退出
{
KillTimer(1);
} else {//定时器开启
SetTimer(1,33,NULL);
}
}

void CBgCutSystemDlg::OnOK() //关闭对话框
{
// TODO: Add extra validation here
if (pCapture)
cvReleaseCapture( &pCapture );//释放抓拍的变量
CDialog::OnOK();
}
HBRUSH CBgCutSystemDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) //设置文本颜色
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);//设置画刷

if (pWnd->GetDlgCtrlID() == IDC_FRAMNUM)//控件上文本赋成红色
{
pDC->SetTextColor(RGB(255,0, 0));
}

if (pWnd->GetDlgCtrlID() == IDC_TIME)//控件上文本赋成红色
{
pDC->SetTextColor(RGB(255, 0, 0));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CBgCutSystemDlg::OnButton2() //不知道是哪个按钮了
{
// TODO: Add your control notification handler code here
m_ys =!m_ys;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式