harris算法是经典的角点检测算法。对静态的图片进行处理当然消耗内存和时间都非常的短,但是对摄像头采集的每一帧处理就需要花费很大的时间和内存,甚至可能因为内存泄露和空间不足而使电脑奔溃,在这里我运用简单的clock()函数测试各个主要函数的响应时间。
第一步:利用差分算子对图像进行滤波
start = clock();
// cout<<CV_MAT_ELEM(*mat_I,double,200,200)<<endl;
//--------------------------------------------------------------------------
//
//--------------------------------------------------------------------------
//定义水平方向差分算子并求Ix
double dx[9]={-1,0,1,-1,0,1,-1,0,1};
mat_Ix=mbys(mat_I,cxDIB,cyDIB,dx,3,3); //求Ix矩阵
// cout<<CV_MAT_ELEM(*mat_Ix,double,200,200)<<endl;
//定义垂直方向差分算子并求Iy
double dy[9]={-1,-1,-1,0,0,0,1,1,1};
mat_Iy=mbys(mat_I,cxDIB,cyDIB,dy,3,3);//求Iy矩阵
// cout<<CV_MAT_ELEM(*mat_Iy,double,200,200)<<endl;
for(j=0;j<cyDIB;j++)
for(i=0;i<cxDIB;i++)
{
S(pImgDx,i,j)=CV_MAT_ELEM(*mat_Ix,double,j,i);//为相应图像赋值
S(pImgDy,i,j)=CV_MAT_ELEM(*mat_Iy,double,j,i);
}
mat_Ix2=mbxy(mat_Ix,mat_Ix,cxDIB,cyDIB);//计算Ix2,Iy2,Ixy矩阵
mat_Iy2=mbxy(mat_Iy,mat_Iy,cxDIB,cyDIB);
mat_Ixy=mbxy(mat_Ix,mat_Iy,cxDIB,cyDIB);
for(j=0;j<cyDIB;j