请高手们帮忙啊!!小弟正在用MFC编一个图像处理的程序,然后第一个遇到的困难就是 图像需要边缘检测,然后我自己写了一个程序,但是始终达不到预期的效果,下面就是边缘检测的部分代码,请高手指教。
下面代码的大体意思就是,我把像素存到了 cImage 二维数组里面,然后找像素为0的点,然后判断这个点的周围8个点,然后如果符合条件的,就把那个点赋为 255.当然中间还用了一个临时的二维数组 bImage .希望那位高手指教一下我下面代码,或者是能提供别的MFC代码就更好了,小弟在这儿不胜感激!
for(y=1; y< Height-1;y++)
{
for(x=1; x< Width-1;x++)
{
if(cImage[y][x] == 0)
{
bImage[y][x]=0;
n1 = cImage[y-1][x-1];
n2 = cImage[y-1][x];
n3 = cImage[y-1][x+1];
n4 = cImage[y][x-1];
n5 = cImage[y][x+1];
n6 = cImage[y+1][x-1];
n7 = cImage[y+1][x];
n8 = cImage[y+1][x+1];
if(n1+n2+n3+n4+n5+n7+n8 == 0)
{
bImage[y][x] = 255; if(m_nBitCount == 16)
{
lIndex = ((Width * y) + x) * 2L;
*(_lpLastVHdr->lpData + lIndex) = bImage[y][x];
}
else if(m_nBitCount == 24)
{
lIndex = ((Width * y) + x) * 3L;
*(_lpLastVHdr->lpData + lIndex + 2) = bImage[y][x];
*(_lpLastVHdr->lpData + lIndex + 1) = bImage[y][x];
*(_lpLastVHdr->lpData + lIndex + 0) = bImage[y][x];
}
}
}
}
}
下面代码的大体意思就是,我把像素存到了 cImage 二维数组里面,然后找像素为0的点,然后判断这个点的周围8个点,然后如果符合条件的,就把那个点赋为 255.当然中间还用了一个临时的二维数组 bImage .希望那位高手指教一下我下面代码,或者是能提供别的MFC代码就更好了,小弟在这儿不胜感激!
for(y=1; y< Height-1;y++)
{
for(x=1; x< Width-1;x++)
{
if(cImage[y][x] == 0)
{
bImage[y][x]=0;
n1 = cImage[y-1][x-1];
n2 = cImage[y-1][x];
n3 = cImage[y-1][x+1];
n4 = cImage[y][x-1];
n5 = cImage[y][x+1];
n6 = cImage[y+1][x-1];
n7 = cImage[y+1][x];
n8 = cImage[y+1][x+1];
if(n1+n2+n3+n4+n5+n7+n8 == 0)
{
bImage[y][x] = 255; if(m_nBitCount == 16)
{
lIndex = ((Width * y) + x) * 2L;
*(_lpLastVHdr->lpData + lIndex) = bImage[y][x];
}
else if(m_nBitCount == 24)
{
lIndex = ((Width * y) + x) * 3L;
*(_lpLastVHdr->lpData + lIndex + 2) = bImage[y][x];
*(_lpLastVHdr->lpData + lIndex + 1) = bImage[y][x];
*(_lpLastVHdr->lpData + lIndex + 0) = bImage[y][x];
}
}
}
}
}
解决方案 »
- MFC 属性页设置问题
- VC6用 REBARINFO 提示未定义???
- vista下这些技术还能用吗?(winsock,win32,win32多线程)
- 如何控制对话栏CDialogBar?
- 请问按钮,标签,TabCtrl 我想把它们设置成背景色.
- ffmpeg 解码amr音频 到pcm文件有噪音
- 在VC中,一条浮点乘的指令相当于多少条浮点加的指令?
- 一个关于WINSOCK的问题???
- 一個控制台應用程序可否生成txt文件,如何生成
- 为什么我在dll中的资源找不到??请大侠们看看我得代码有什么问题??
- 关于ScrollView动态改变视图大小和滚动条显示的问题 急急急急
- SendMessage发送WM_CTLCOLOR消息崩溃
不好意思啊,我是刚接触MFC 不知道你指的Cximage 这个是什么意思?在哪儿里可以看到,谢谢
关于边缘检测,我建议看一看Sobel一类的边缘检测算子
如opencv中的cvcanny,cvsobel等
http://blog.csdn.net/fengbingchun/article/details/5816253
Cximage中有边缘检测,参考一下吧。请问一下,CxImage中二值图边缘检测的函数是?能不能处理带洞的形状?