没有合适的资源?快使用搜索试试~ 我知道了~
光流法C++源代码
4星 · 超过85%的资源 需积分: 50 119 下载量 12 浏览量
2011-02-21
18:06:19
上传
评论 4
收藏 5KB TXT 举报
温馨提示
试读
6页
光流法C++源代码
资源推荐
资源详情
资源评论
void calculate(unsigned char* buf)
{
int Ex,Ey,Et;
int gray1,gray2;
int u;
int i,j;
memset(opticalflow,0,width*height*sizeof(int));
memset(output,255,size);
for(i=2;i<height-2;i++){
for(j=2;j<width-2;j++){
gray1 = int(((int)(buf[(i*width+j)*3])
+(int)(buf[(i*width+j)*3+1])
+(int)(buf[(i*width+j)*3+2]))*1.0/3);
gray2 = int(((int)(prevframe[(i*width+j)*3])
+(int)(prevframe[(i*width+j)*3+1])
+(int)(prevframe[(i*width+j)*3+2]))*1.0/3);
Et = gray1 - gray2;
gray2 = int(((int)(buf[(i*width+j+1)*3])
+(int)(buf[(i*width+j+1)*3+1])
+(int)(buf[(i*width+j+1)*3+2]))*1.0/3);
Ex = gray2 - gray1;
gray2 = int(((int)(buf[((i+1)*width+j)*3])
+(int)(buf[((i+1)*width+j)*3+1])
+(int)(buf[((i+1)*width+j)*3+2]))*1.0/3);
Ey = gray2 - gray1;
Ex = ((int)(Ex/10))*10;
Ey = ((int)(Ey/10))*10;
Et = ((int)(Et/10))*10;
u = (int)((Et*10.0)/(sqrt((Ex*Ex+Ey*Ey)*1.0))+0.1);
opticalflow[i*width+j] = u;
{
int Ex,Ey,Et;
int gray1,gray2;
int u;
int i,j;
memset(opticalflow,0,width*height*sizeof(int));
memset(output,255,size);
for(i=2;i<height-2;i++){
for(j=2;j<width-2;j++){
gray1 = int(((int)(buf[(i*width+j)*3])
+(int)(buf[(i*width+j)*3+1])
+(int)(buf[(i*width+j)*3+2]))*1.0/3);
gray2 = int(((int)(prevframe[(i*width+j)*3])
+(int)(prevframe[(i*width+j)*3+1])
+(int)(prevframe[(i*width+j)*3+2]))*1.0/3);
Et = gray1 - gray2;
gray2 = int(((int)(buf[(i*width+j+1)*3])
+(int)(buf[(i*width+j+1)*3+1])
+(int)(buf[(i*width+j+1)*3+2]))*1.0/3);
Ex = gray2 - gray1;
gray2 = int(((int)(buf[((i+1)*width+j)*3])
+(int)(buf[((i+1)*width+j)*3+1])
+(int)(buf[((i+1)*width+j)*3+2]))*1.0/3);
Ey = gray2 - gray1;
Ex = ((int)(Ex/10))*10;
Ey = ((int)(Ey/10))*10;
Et = ((int)(Et/10))*10;
u = (int)((Et*10.0)/(sqrt((Ex*Ex+Ey*Ey)*1.0))+0.1);
opticalflow[i*width+j] = u;
if(abs(u)>10){
output[(i*width+j)*3] = 0;
output[(i*width+j)*3+1] = 0;
output[(i*width+j)*3+2] = 0;
}
}
}
memcpy(prevframe,buf,size);
}
//////////////////////////////////////////////////////////////////////////
/另一个代码
/
/////////////////////////////////////////////////////////////////////////////
WW_RETURN HumanMotion::ImgOpticalFlow(IplImage *pre_grey,IplImage *grey)
/*************************************************
Function:
Description: 光流法计算运动速度与方向
Date: 2006-6-14
Author:
Input:
Output:
Return:
Others:
*************************************************/
{
output[(i*width+j)*3] = 0;
output[(i*width+j)*3+1] = 0;
output[(i*width+j)*3+2] = 0;
}
}
}
memcpy(prevframe,buf,size);
}
//////////////////////////////////////////////////////////////////////////
/另一个代码
/
/////////////////////////////////////////////////////////////////////////////
WW_RETURN HumanMotion::ImgOpticalFlow(IplImage *pre_grey,IplImage *grey)
/*************************************************
Function:
Description: 光流法计算运动速度与方向
Date: 2006-6-14
Author:
Input:
Output:
Return:
Others:
*************************************************/
{
剩余5页未读,继续阅读
h414450060
- 粉丝: 25
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页