大家说说这本书怎么样?《Visual C++数字图像处理(第二版)》,高分相送! 问题:1、《Visual C++数字图像处理(第二版)》这本书谁用过? 怎么样?2、偶在学习多媒体,图像处理的,有什么好书介绍么? 上面那本书如何?另外还有什么更好的??3、要求用VC的,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这本书好多地方都有,不过只是大概看过,至少本人认为作用不大,不过可能对有些人有用。我在图象处理领域的启蒙书籍是清华大学的吕凤军写的一本书-“做一个自己的PHOTOSHOP”,此书适于入门,且一些算法也不错,吕写此书时还在清华读硕士,不过现在在美国读博士,应该毕业了吧。 我刚刚用过这本书,感觉上不知该怎么说,它只是一本比较入门级的书,书中的例子都是针对256色灰度级图像的,而且最要命的是光盘附录中的classview内容是只读的,你看不到类库,真是非常的恼人,我建议你可以先看看朱志刚翻译的数字图像处理这本书,然后再看vc++ 只读的,你可以去掉呀。我的能看到的。现在有许多书,内容都差不多。只不过这一本出来的早,所以许多人都有。上面的代码也不错。多对灰度图,有些可以改一下呀。我刚改了一个,给你看看。/************************************************************************* * * 函数名称: * MirrorDIB() * * 参数: * LPSTR lpDIBBits - 指向源DIB图像指针 * LONG lWidth - 源图像宽度(象素数) * LONG lHeight - 源图像高度(象素数) * BOOL bDirection - 镜像的方向,TRUE表示水平镜像,FALSE表示垂直镜像 * int nImageBits -图像的位数 * * 返回值: * BOOL - 镜像成功返回TRUE,否则返回FALSE。 * * 说明: * 该函数用来镜像DIB图像。可以指定镜像的方式是水平还是垂直。 *支持8,24,32位图像 ************************************************************************/ BOOL WINAPI MirrorDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BOOL bDirection,int nImageBits) { // 指向源图像的指针 LPSTR lpSrc; // 指向要复制区域的指针 LPSTR lpDst; // 指向复制图像的指针 LPSTR lpBits; HLOCAL hBits; // 循环变量 LONG i; LONG j; int nBits;//每像素占的位数 // 图像每行的字节数 LONG lLineBytes; // 计算图像每行的字节数 lLineBytes = WIDTHBYTES(lWidth *nImageBits); // 暂时分配内存,以保存一行图像 hBits = LocalAlloc(LHND, lLineBytes); if (hBits == NULL) { // 分配内存失败 return FALSE; } // 锁定内存 lpBits = (char * )LocalLock(hBits); int nStep=nImageBits/8; long lCenter=lWidth/2*nStep; // 判断镜像方式 if (bDirection) { // 水平镜像 // 针对图像每行进行操作 for(i = 0; i < lHeight; i++) { // 针对每行图像左半部分进行操作 for(j = 0; j < lCenter; j+=nStep) { for(nBits=0;nBits<nStep;nBits++) { lpSrc = (char *)lpDIBBits + lLineBytes * i +lCenter- j+nBits; lpDst = (char *)lpDIBBits + lLineBytes * i +lCenter+ j+nBits; *lpBits = *lpDst; *lpDst = *lpSrc; *lpSrc = *lpBits; } } } } else { // 垂直镜像 // 针对上半图像进行操作 for(i = 0; i < lHeight / 2; i++) { // 指向倒数第i行象素起点的指针 lpSrc = (char *)lpDIBBits + lLineBytes * i; // 指向第i行象素起点的指针 lpDst = (char *)lpDIBBits + lLineBytes * (lHeight - i - 1); // 备份一行,宽度为lWidth memcpy(lpBits, lpDst, lLineBytes); // 将倒数第i行象素复制到第i行 memcpy(lpDst, lpSrc, lLineBytes); // 将第i行象素复制到倒数第i行 memcpy(lpSrc, lpBits, lLineBytes); } } // 释放内存 LocalUnlock(hBits); LocalFree(hBits); // 返回 return TRUE; } 不过 《phoenix 的 photoshop 》更好,使用api,讲解简单清楚! 有没有哪位志同道合的兄长提供(光盘)源代码。我的Email:[email protected] 关于多文档程序设置窗体位置的问题 马上给分,在线等,小问题 大家帮我拿拿主意 顶的有分 CSocket中怎么知道数据包是不是到了? 请教高手BMP图象的读入及图象数据的提取问题 关于服务程序 寒!VC怎么会有这么大的问题!!! 哪位高手知道控制MessageBox消息框在屏幕中的显示位置 用NDIS开发应该到什么地方下载什么东西! 急!请问哪里有vc5下载?谢谢!!! 迷惑的问题! Win32控制台应用程序中不能使用WaitableTimer?
我在图象处理领域的启蒙书籍是清华大学的吕凤军写的一本书-“做一个自己的PHOTOSHOP”,此书适于入门,且一些算法也不错,吕写此书时还在清华读硕士,不过现在在美国读博士,应该毕业了吧。
现在有许多书,内容都差不多。
只不过这一本出来的早,所以许多人都有。上面的代码也不错。
多对灰度图,有些可以改一下呀。我刚改了一个,给你看看。
/*************************************************************************
*
* 函数名称:
* MirrorDIB()
*
* 参数:
* LPSTR lpDIBBits - 指向源DIB图像指针
* LONG lWidth - 源图像宽度(象素数)
* LONG lHeight - 源图像高度(象素数)
* BOOL bDirection - 镜像的方向,TRUE表示水平镜像,FALSE表示垂直镜像
* int nImageBits -图像的位数
*
* 返回值:
* BOOL - 镜像成功返回TRUE,否则返回FALSE。
*
* 说明:
* 该函数用来镜像DIB图像。可以指定镜像的方式是水平还是垂直。
*支持8,24,32位图像
************************************************************************/ BOOL WINAPI MirrorDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BOOL bDirection,int nImageBits)
{
// 指向源图像的指针
LPSTR lpSrc;
// 指向要复制区域的指针
LPSTR lpDst;
// 指向复制图像的指针
LPSTR lpBits;
HLOCAL hBits;
// 循环变量
LONG i;
LONG j;
int nBits;//每像素占的位数
// 图像每行的字节数
LONG lLineBytes;
// 计算图像每行的字节数
lLineBytes = WIDTHBYTES(lWidth *nImageBits);
// 暂时分配内存,以保存一行图像
hBits = LocalAlloc(LHND, lLineBytes);
if (hBits == NULL)
{
// 分配内存失败
return FALSE;
}
// 锁定内存
lpBits = (char * )LocalLock(hBits);
int nStep=nImageBits/8;
long lCenter=lWidth/2*nStep;
// 判断镜像方式
if (bDirection)
{
// 水平镜像
// 针对图像每行进行操作
for(i = 0; i < lHeight; i++)
{
// 针对每行图像左半部分进行操作
for(j = 0; j < lCenter; j+=nStep)
{
for(nBits=0;nBits<nStep;nBits++)
{
lpSrc = (char *)lpDIBBits + lLineBytes * i +lCenter- j+nBits;
lpDst = (char *)lpDIBBits + lLineBytes * i +lCenter+ j+nBits;
*lpBits = *lpDst;
*lpDst = *lpSrc;
*lpSrc = *lpBits;
}
}
}
}
else
{
// 垂直镜像
// 针对上半图像进行操作
for(i = 0; i < lHeight / 2; i++)
{
// 指向倒数第i行象素起点的指针
lpSrc = (char *)lpDIBBits + lLineBytes * i;
// 指向第i行象素起点的指针
lpDst = (char *)lpDIBBits + lLineBytes * (lHeight - i - 1);
// 备份一行,宽度为lWidth
memcpy(lpBits, lpDst, lLineBytes);
// 将倒数第i行象素复制到第i行
memcpy(lpDst, lpSrc, lLineBytes);
// 将第i行象素复制到倒数第i行
memcpy(lpSrc, lpBits, lLineBytes);
}
}
// 释放内存
LocalUnlock(hBits);
LocalFree(hBits);
// 返回
return TRUE;
}
我的Email:[email protected]