一天从网上下了20个vc的hough代码,没有一个代码是成功的。令人郁闷,我参考matlab代码写出了hough检测单个直线的程序
Hough变换:
本程序是我花费时间最长的程序;参考matlab算法;首先求出原图上的每一个像素在变换域上的对应曲线,即原图上每一点(i,j)对应变换域曲线(p,k);p=(int)(i*cos(pi*k/180)+j*sin(pi*k/180))(0
然后遍历(i,j),累加变换域重复出现的位置,即曲线的交点
然后遍历累加器,寻找交点最大的数据,找出对应的原图坐标,即为所求直线
主要代码
for(i=0;i
{
for(j=0,n=0;n
{ //gray 变量存储rgb转灰度的数据
gray= ((float)(img.image[lineBytes*i+n+2])+(float)(*(img.image+lineBytes*i+n+1))+(float)(*(img.image+lineBytes*i+n)))/3; //lineBytes 原图每行实际字节数
grayPic[i*img.width+j]=(byte)gray;//转换成的灰度图像放在grayPic中
}
}
int logNum; //边缘检测
memset(lpDIBBits,(byte)0,sizeof(byte)*img.height*img.width);
for(i=3;i</