(C++ 图像处理高手请进)关于用C++进行一些基本的图像处理问题 200
请问如何用C++编写一个BMP图像处理的程序?程序要求:读入两张bmp图像A、B,然后在它们之中进行变换,如变换函数:F(t)=(1-t)A+tB,其中A、B分别表示图像...
请问如何用C++编写一个BMP图像处理的程序?
程序要求:
读入两张bmp图像A、B,然后在它们之中进行变换,如变换函数:F(t)= (1-t)A+tB,其中A、B分别表示图像A、B的所有信息。
示例:当t=1的时候,显示的就是图像B;
当t=0的时候,显示的就是图像A。
当t=0.5时,显示的图像的像素就是0.5倍对应A、B图像的像素之和。
输入示例:
D:\\Image_A.bmp
D:\\Image_B.bmp
输出示例:
显示该过程的渐变所产生的所有图像。
说明:如果用到MFC工程的话,请给关于工程详细说明,如从打开Visual C++ 6.0 到每一步要选择什么,再到如何编译,连接运行等等,因为本人未曾做过工程类的编程。越详细越好!
开发环境:Visual C++ 6.0
特别说明:提供源代码(完全可编译通过,运行的)。
解决该问题后再送200分。 展开
程序要求:
读入两张bmp图像A、B,然后在它们之中进行变换,如变换函数:F(t)= (1-t)A+tB,其中A、B分别表示图像A、B的所有信息。
示例:当t=1的时候,显示的就是图像B;
当t=0的时候,显示的就是图像A。
当t=0.5时,显示的图像的像素就是0.5倍对应A、B图像的像素之和。
输入示例:
D:\\Image_A.bmp
D:\\Image_B.bmp
输出示例:
显示该过程的渐变所产生的所有图像。
说明:如果用到MFC工程的话,请给关于工程详细说明,如从打开Visual C++ 6.0 到每一步要选择什么,再到如何编译,连接运行等等,因为本人未曾做过工程类的编程。越详细越好!
开发环境:Visual C++ 6.0
特别说明:提供源代码(完全可编译通过,运行的)。
解决该问题后再送200分。 展开
8个回答
2009-03-24
展开全部
二楼说得太好了
付上同学的一句话:
气存丹田,伸手要钱,不给我钱,吃我一拳
付上同学的一句话:
气存丹田,伸手要钱,不给我钱,吃我一拳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-03-24
展开全部
void __fastcall TAlpha::Add(byte * const ptrDestBuffer, const byte * const ptrSrcBuffer, int Width, int Height, int idLineAdd, int isLineAdd, int idPixelAdd, int isPixelAdd, float fRatio) const
{
if (fRatio == 0.00f)
{
return;
}
byte *ptrDest = ptrDestBuffer;
const byte *ptrSrc = ptrSrcBuffer;
int value;
float fRatio1 = 1.000f - fRatio;
for (int i = 0; i < Height; i++)
{
for (int j = 0; j < Width; j++)
{
value = fRatio1 * *(ptrDest) + fRatio * *(ptrSrc++);
*(ptrDest++) = (byte)value;
value = fRatio1 * *(ptrDest) + fRatio * *(ptrSrc++);
*(ptrDest++) = (byte)value;
value = fRatio1 * *(ptrDest) + fRatio * *(ptrSrc++);
*(ptrDest++) = (byte)value;
ptrDest += idPixelAdd;
ptrSrc += isPixelAdd;
}
ptrDest += idLineAdd;
ptrSrc += isLineAdd;
}
}
{
if (fRatio == 0.00f)
{
return;
}
byte *ptrDest = ptrDestBuffer;
const byte *ptrSrc = ptrSrcBuffer;
int value;
float fRatio1 = 1.000f - fRatio;
for (int i = 0; i < Height; i++)
{
for (int j = 0; j < Width; j++)
{
value = fRatio1 * *(ptrDest) + fRatio * *(ptrSrc++);
*(ptrDest++) = (byte)value;
value = fRatio1 * *(ptrDest) + fRatio * *(ptrSrc++);
*(ptrDest++) = (byte)value;
value = fRatio1 * *(ptrDest) + fRatio * *(ptrSrc++);
*(ptrDest++) = (byte)value;
ptrDest += idPixelAdd;
ptrSrc += isPixelAdd;
}
ptrDest += idLineAdd;
ptrSrc += isLineAdd;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-03-24
展开全部
那必须要收钱,不能助长懒惰之风气,我们要钱不为别的,只为能让你们明白一点 要靠一点自己的双手,不能只想天上掉馅饼
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体源代码 自己慢慢写 才有乐趣
用api 函数
1 创建位图 CreateBitmap
2 将位图数据复制到自定义数组中 GetBitmapBits
3 直接对数组数据进行循环运算 A[i]= (1-t)A[i] + tB[i]
4 保存像数值到位图中 SetBitmapBits
5 保存位图到磁盘 SaveBmp
用api 函数
1 创建位图 CreateBitmap
2 将位图数据复制到自定义数组中 GetBitmapBits
3 直接对数组数据进行循环运算 A[i]= (1-t)A[i] + tB[i]
4 保存像数值到位图中 SetBitmapBits
5 保存位图到磁盘 SaveBmp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询