硬件准备
ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器
软件准备
Visual DSP++软件
硬件链接
功能介绍
代码实现了图像亮暗处理,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的 testin.bmp 文件,进行图像亮暗处理后把图片保存到工程文件根目下" …/ImageView"路径中的 testout.bmp 文件,并且将处理后的图片显示到液晶屏上。例子中的算法只支持尺寸为 480*272 的 24bit 的 bmp 图片,可以根据自己的需要自行调整。
代码使用说明
funct.c 中的 Bright(const BMPIMAGE *img,int rate)
该函数是将读取的图像进行亮暗处理。
BMPIMAGE * 图像结构体指针
int rate 亮暗参数,大于 100 变亮,小于 100 变暗,等于 100 保持不变
在 main.c 文件中定义了一个#define LCD_VIEW_ENABLE 宏开关,如果不需要将处理后的图片显示在液晶屏上,只需将这个宏开关注释掉
代码实验步骤
- 将工程文件根目下的 ImageView 文件夹内存放一个名为 testin.bmp 的图像文件,该文件尺寸为 480*272 的24bit 的 bmp 图片(默认已存一幅测试图片)。
- 打开工程文件 BF53x_Bright.dpj,编译并运行代码。
- 等待图像处理,处理完成之后会在液晶屏上显示处理后的图片,并在工程文件根目下的 ImageView 文件夹内生成一个处理后名为 testout.bmp 图片。
代码实验结果
1.液晶屏上显示处理后的图片。
2.在工程文件根目下的 ImageView 文件夹中查看处理后名为 testout.bmp 图片。
程序源码
#include <cdefBF533.h>
#include “bmp.h”
/********************************************************
- 函数名 : Bright
- 函数功能 : 图像亮暗处理
-
-
函数参数 : BMPIMAGE * 图像结构体指针
- int rate 大于100变亮,小于100变暗,等于100保持不变
- 函数返回值 :FALSE 处理失败
-
TRUE 处理成功
********************************************************/
int Bright(BMPIMAGE* img,int rate)
{
// 指向源象素的指针
unsigned char *lpSrc = img->imgbuf;
int i;
// 图像的宽度和高度
long lWidth;
long lHeight;
unsigned int intR,intG,intB,intMax;
lWidth = img->infohead.BiWidth;
lHeight = img->infohead.BiHeight;
if(rate<=100)
{
for(i=0;i<lWidth*lHeight*3;i=i+3)
{
lpSrc[i+0]=(lpSrc[i+0]*rate+50)/100;
lpSrc[i+1]=(lpSrc[i+1]*rate+50)/100;
lpSrc[i+2]=(lpSrc[i+2]*rate+50)/100;
}
}
else
{
for(i=0;i<lWidth*lHeight*3;i=i+3)
{
intR=(lpSrc[i+0]*rate+50)/100;
intG=(lpSrc[i+1]*rate+50)/100;
intB=(lpSrc[i+2]*rate+50)/100;
intMax=intR>intG?intR:intG;
intMax=intMax>intB?intMax:intB;
if(intMax>255)
{
intR=(intR*255)/intMax;
intG=(intG*255)/intMax;
intB=(intB*255)/intMax;
}
lpSrc[i+0]=intR;
lpSrc[i+1]=intG;
lpSrc[i+2]=intB;
}
}
}