c++系统开发实例精粹内附的80例源代码
环境:windows2000,c++6.0
源代码在线查看: 灰度均衡.txt
//本例题提供核心算法
//参数说明:
//LPSTR lpDIBBits - 指向源DIB图像指针
//LONG lWidth - 源图像宽度(象素数)
//LONG lHeight - 源图像高度(象素数)
//程序说明:
//该函数用来对图像进行直方图均衡。
BOOL WINAPI InteEqualize(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
// 指向源图像的指针
unsigned char* lpSrc;
// 临时变量
LONG lTemp;
// 循环变量
LONG i;
LONG j;
// 灰度映射表
BYTE bMap[256];
// 灰度映射表
LONG lCount[256];
// 图像每行的字节数
LONG lLineBytes;
// 计算图像每行的字节数
lLineBytes = WIDTHBYTES(lWidth * 8);
// 重置计数为0
for (i = 0; i < 256; i ++)
{
// 清零
lCount[i] = 0;
}
// 计算各个灰度值的计数
for (i = 0; i < lHeight; i ++)
{
for (j = 0; j < lWidth; j ++)
{
lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;
// 计数加1
lCount[*(lpSrc)]++;
}
}
// 计算灰度映射表
for (i = 0; i < 256; i++)
{
// 初始为0
lTemp = 0;
for (j = 0; j {
lTemp += lCount[j];
}
// 计算对应的新灰度值
bMap[i] = (BYTE) (lTemp * 255 / lHeight / lWidth);
}
// 每行
for(i = 0; i < lHeight; i++)
{
// 每列
for(j = 0; j < lWidth; j++)
{
// 指向DIB第i行,第j个象素的指针
lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
// 计算新的灰度值
*lpSrc = bMap[*lpSrc];
}
}
// 返回
return TRUE;
}
|
相关资源 |
|
-
c++系统开发实例精粹内附的80例源代码
环境:windows2000,c++6.0
-
本内容为:VC6.0数据库系统开发实例导航 一书的随书光盘。内含9个详细的MIS系统。每个程序的说明都很详细。
-
JSP数据库开发实例精粹,很好的参考书
-
JSP hibernate数据库开发实例精粹,很好的参考书
-
这是一个学生管理系统.vb+sql
是VB数据库系统开发实例导航书中的一个实例
-
Visual C++6_0数据库系统开发实例导航
提供给开发数据库的朋友们
-
,"智能大厦自动报警系统",是从赛奎春所主编的"C++信息系统开发实例精选"CD中拷贝出来的,对mscomm 控件进制转换串口通信等内容进行了详细介绍。
-
嵌入式DOS系统上位升级程序FileUpgrade, 需配合本人上传的FileUpr程序应用, VC++开发, 非常实用, 内附说明及源码
|