大家好
能不能给一个图像平滑处理的算法及原码?谢谢,在线急等!!!!!!!!
能不能给一个图像平滑处理的算法及原码?谢谢,在线急等!!!!!!!!
解决方案 »
- vc++开发的程序 需要用到哪些dll
- 好吧我是新手。MFC,从CFrameWnd派生MyWnd里面什么都不写,然后初始化窗口时用MyWnd,然后。。出错了。。
- c++中怎么封装常用类,利于多个工程调用?
- 能者有劳
- 求助关于两个应用程序之间的传递字符串方法
- 请问各位如何清空消息队列中已有的消息?
- (狂散100分,UP有分)问题:各位程序员,你好,你所在公司软件人员多少?是否在执行软件工程?你对软件工程认识是?月薪?
- OpenGL中NURBS曲面
- 各位大虾:我怎样在对话框中获取对话框外的鼠标、键盘消息!?
- 动态连接库中加入对话框为何会非法操作?
- 请各位高手过来帮帮小弟的忙,关于获得桌面坐标的问题
- 请 潜龙ROOT 兄接分!
在图象处理领域,你这个问题和1+1=?差不多,所以...
还有你真的不知道,Baidu会耐心的告诉你
谢谢!!!
{
// TODO: 在此添加命令处理程序代码
CbmpprojDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
HDIB hDIB=pDoc->GetHDIB();
if(hDIB==NULL)
{
AfxMessageBox("文件打开错误!");
return;
}
LPSTR lpDIB;
LPSTR lpDIBBits;// 指向DIB象素指针
FLOAT aValue[9]; // 模板元素数组
lpDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB);
lpDIBBits = ::FindDIBBits(lpDIB);
if (::DIBNumColors(lpDIB) != 256)
{
// 提示用户
AfxMessageBox("目前只支持256色位图的平滑!");
// 解除锁定
::GlobalUnlock((HGLOBAL)hDIB);
// 返回
return;
}
aValue[0] = 1.0;
aValue[1] = 2.0;
aValue[2] = 1.0;
aValue[3] = 2.0;
aValue[4] = 4.0;
aValue[5] = 2.0;
aValue[6] = 1.0;
aValue[7] = 2.0;
aValue[8] = 1.0;
if (::Template(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB),
3, 3, 1, 1, aValue, 0.0625))
{
// 设置脏标记
//smooth_Flag=TRUE;
}
else
{
// 提示用户
AfxMessageBox("分配内存失败!");
}
// 解除锁定
::GlobalUnlock((HGLOBAL)hDIB); pDoc->SetModifiedFlag(TRUE);
Invalidate();
}
Template是模板计算函数,这里选是的3*3高斯模板,lpDIBBits是指向像素的指针。其实你要这些代码没有用。处理图像的过程比较麻烦,但每次做的步骤都是一样的,所以你只要照着书的一个例子敲一次就会了,不是别人不给你代码,只是这些都是基本的步骤,要给只能给你把一个源程序里的代码都贴上来了,也看不过来。估计贴这一点对你也没有什么用,如果你要源码的话留个信箱,我给你发过去,以前做实验编的程序,里面有一步是平滑。不过我建议你还是找本VC图像处理书看一下。不要太浮躁,不然既便这次利用源码实现了你要的功能,下次说不定又卡住了。