检测中心很简单,首先读取图像,再进行二值化,接着首先找到黑方块的起始点
BOOL b[Height][Width]={0};
int *p=&b[0][0];
LONG nCount = 0;
for(LONG i=0;i<Height;i++)
{
for(LONG j=0;j<Width;j++)
{
if(rgbA.rgbBlue == 255 && rgbA.rgbGreen = 255 && rgbA.rgbRed = 255)
{
b[i][j] = 1; }
if(*p==0)
{
nCount ++; p++;
}
}
}其中宽和高可以通过位图信息结构体BITMAPINFOHEADER来获取
在进行如下操作获取中心点
if (nCount!=0)
{
for (long m=0;m<nCount/2;m++)
{
do
{ p++;
} while (*p==0);
}
}
也就是遇到0跳过,扫描黑方块的一般点数。
至于在方块周围用红色套起来,涉及到边缘检测,轮廓提取,代码比较长,可参看《visual c++数字图像处理》的相关内容,网上也有其配套光盘的源码下载。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。