求图像边缘检测 VC++程序代码
2个回答
展开全部
Roberts算子边缘检测代码:
void Roberts(BYTE *dst,BYTE *src,int width,int height)
{
int A, B; // A(x-1, y-1) B(x, y-1)
int C, D; // C(x-1, y) D(x, y)
int x;
int y;
for (x = 0; x < width; x++)
{
*dst = 0;
dst++;
}
// 指向第一行
src += width;
// 不处理最上边和最左边
for (y = 1; y < height; y++)
{
// 指向每行第一列
*dst = 0;
src++;
dst++;
for (x = 1; x < width; x++)
{
A = *(src - width - 1);
B = *(src - width);
C = *(src - 1);
D = *src;
int temp = (int)(sqrt((A - D) * (A - D) + (B - C) * (B - C)));
// 越界判断 0 -- 255
if(temp >= 255)
{
*dst = 255;
}
else
{
*dst = (BYTE)temp;
}
src++;
dst++;
} // x
} // y
return;
} // end of Roberts
void Roberts(BYTE *dst,BYTE *src,int width,int height)
{
int A, B; // A(x-1, y-1) B(x, y-1)
int C, D; // C(x-1, y) D(x, y)
int x;
int y;
for (x = 0; x < width; x++)
{
*dst = 0;
dst++;
}
// 指向第一行
src += width;
// 不处理最上边和最左边
for (y = 1; y < height; y++)
{
// 指向每行第一列
*dst = 0;
src++;
dst++;
for (x = 1; x < width; x++)
{
A = *(src - width - 1);
B = *(src - width);
C = *(src - 1);
D = *src;
int temp = (int)(sqrt((A - D) * (A - D) + (B - C) * (B - C)));
// 越界判断 0 -- 255
if(temp >= 255)
{
*dst = 255;
}
else
{
*dst = (BYTE)temp;
}
src++;
dst++;
} // x
} // y
return;
} // end of Roberts
参考资料: http://www.cnfgg.com/article/Vc/Vc_Roberts.htm
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询