求教:我是超级菜鸟,想问问各位高手,用VC++6.0处理图像的时候建立什么类型的工程和文件,建立以后怎么做

然后就是将要处理的图片如何调入,如果有图像处理算法源码,该怎么做?能给我来个具体的实例最好带图,急用谢谢各位高手!我的邮箱365557501@qq.com高手请进急用不知... 然后就是将要处理的图片如何调入,如果有图像处理算法源码,该怎么做?能给我来个具体的实例最好带图,急用 谢谢各位高手!我的邮箱365557501@qq.com
高手请进 急用 不知道的别来酱油 谢谢!没功夫闲聊
展开
 我来答
百度网友571c60f
2011-08-25 · 超过14用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:54.1万
展开全部
原则上任何cpp文件都可以处理图像的,只不过看你把打开图像文件的句柄放在什么位置上
例如:文件-〉新建-〉工程-〉MFC AppWizard.EXE-〉起个工程名字,我选择aaa,然后点下一步-〉选择单文档或者双重文档都可以,看你的需求,接下来同样如此,直接选择默认也可。然后会自动建立几个文件,比如CAaaView类,CAaaApp类,CAaaDoc类,CMainframe类等等,主要看你头几步的选择,然后会出现源文件有aaa.cpp, aaa.rc, aaaDoc.cpp, aaaView.cpp, MainFrm.cpp, StdAfx.cpp,对应的头文件就是上面的名字,后缀是.h的,不过aaa.rc对应的是Resource.h文件,这个存储的是菜单。好了完成这一步,许多代码都自动填充进相应的文件了。
aaa.cpp一般来讲,程序运行的时候,就是先运行它,然后完成各类窗体的初始化,不过代码一般不放在这里。
把打开图像的过程放在aaaDoc.cpp中的CAaaDoc::OnNewDocument()中(这个是自动定义好的)
CFile file; //CFile类
CFileException fe;
// 打开文件
if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
{
// 失败
ReportSaveLoadException(lpszPathName, &fe,
FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
// 返回FALSE
return FALSE;
}
BITMAPFILEHEADER bmfHeader; //BMP文件头
DWORD dwBitsSize;
HDIB hDIB;
LPSTR pDIB;
// 获取DIB(文件)长度(字节)
dwBitsSize = file.GetLength();
// 尝试读取DIB文件头
if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader))
{
// 大小不对,返回NULL。
return NULL;
}
// 判断是否是DIB对象,检查头两个字节是否是"BM"
if (bmfHeader.bfType != DIB_HEADER_MARKER)
{
// 非DIB对象,返回NULL。
return NULL;
}
// 为DIB分配内存,这里hDIB就是打开BMP文件并读取数据到内存中的句柄了,任何修改不通过它是不行的
hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize);
if (hDIB == 0)
{
// 内存分配失败,返回NULL。
return NULL;
}
// 锁定 pDIB是返回该句柄的指针
pDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
// 读象素
if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) !=
dwBitsSize - sizeof(BITMAPFILEHEADER) )
{
// 大小不对。
// 解除锁定
::GlobalUnlock((HGLOBAL) hDIB);
// 释放内存
::GlobalFree((HGLOBAL) hDIB);
// 返回NULL。
return NULL;
}
// 解除锁定
::GlobalUnlock((HGLOBAL) hDIB);
// 返回DIB句柄
return hDIB;
就是这些语句,不过,这些读取DIB位图有专门的一个函数库,你可以直接添加这些文件就行了
有 DIBAPI.CPP DIBAPI.h你自己上网上搜索就有下载。不是源代码,切误复制运行。
上面把图像读到内存中,返回句柄hDIB,然后呢你需要在
aaaView::OnDraw(CDC* pDC) 里面继续添加代码,好把内存中的图像显示出来,这里也需要用到DIBAPI.CPP里面的函数,要不自己编,可是太麻烦了。我给你列出这些函数吧,自己看看就知道了。
// ************************************************************************
// 文件名:dibapi.cpp
//
// DIB(Independent Bitmap) API函数库:
//
// PaintDIB() - 绘制DIB对象
// CreateDIBPalette() - 创建DIB对象调色板
// FindDIBBits() - 返回DIB图像象素起始位置
// DIBWidth() - 返回DIB宽度
// DIBHeight() - 返回DIB高度
// PaletteSize() - 返回DIB调色板大小
// DIBNumColors() - 计算DIB调色板颜色数目
// CopyHandle() - 拷贝内存块
//
// SaveDIB() - 将DIB保存到指定文件中
// ReadDIBFile() - 重指定文件中读取DIB对象
//
// DIBToPCX256() - 将指定的256色DIB对象保存为256色PCX文件
// ReadPCX256() - 读取256色PCX文件
//
// ************************************************************************
1992随风
2011-08-18 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:31.1万
展开全部
如果是MFC的话,从下方选择第二个标签,单击工程点右键选择impor然后t选择图片,不过必须图片是bmp格式的,
追问
你说的我找不到呀,工程里面没有impor这种类型,我是超级菜鸟,一般的处理图像是用MFC还是其他的 你能给我说详细点吗?最好给我付图说明下 非常感谢!
追答
文件及操作视频发到你的邮箱里了,不好意思发晚了啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wdsgvafc
2011-08-17 · TA获得超过151个赞
知道答主
回答量:261
采纳率:0%
帮助的人:291万
展开全部
不知道。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangbyLove
2011-08-18 · TA获得超过370个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:98万
展开全部
我有一些图像处理的代码 发到你的邮箱了。
追问
非常感谢  不过我有代码  我现在是急需知道如何实现这些代码去处理图像 也就是在VC里面的具体操作方法  因为我是超级菜鸟。
追答
就是先建立一个菜单,然后添加相应的响应函数,把所用的处理代码复制到响应函数里就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式