点击“打开”选择需要转换的图片,选择“输出数据类型”、“扫描模式”、“输出灰度”、“最大宽度和高度”,然后点击“保存”,这里保存的名字为Image.c
相关代码如下: #include <stdio.h> // C 语言标准输入输出函数库 #include "Image.h" // 24 位 RGB 彩色图片 蓝B 绿G 红R 排列
// 软件断点
#define SW_BREAKPOINT asm(" SWBP 0 ");
typedef struct
{
unsigned char Blue; // 蓝色分量
unsigned char Green; // 绿色分量
unsigned char Red; // 红色分量
} tagRGB24;
typedef struct tagRGB24 RGB24;
unsigned char Gray[240000];
void RGB2Gray(unsigned int N, const unsigned char *Image, unsigned char *Gray)
{
unsigned int i;
for(i = 0; i < N ;i++)
{
// 原始公式
// Gray = Image[3 * i + 2] * 0.299 + Image[3 * i + 1] * 0.587 + Image[3 * i] * 0.114;
// 8 位精度优化
Gray = (Image[3 * i + 2] * 76 + Image[3 * i + 1] * 150 + Image[3 * i] * 30) >> 8;
}
}
int main(void)
{
// 转换 RGB24 图片为灰度图
// 前 8 个字节是图片信息
RGB2Gray(240000, Image +8, Gray);
// 断点
SW_BREAKPOINT;
} image tool 导入的文件 GRB24 <?xml version="1.0" encoding="UTF-8"?> <java version="1.6.0_13" class="java.beans.XMLDecoder"> <object class="com.ti.dvt.ui.views.core.ImageProp"> <void property="delegateProp"> <object class="com.ti.dvt.ui.views.core.RGBProp"> <void property="blueMask"> <long>16711680</long> </void> <void property="greenMask"> <long>65280</long> </void> <void property="lineCount"> <int>51</int> 垂直分辨率 </void> <void property="lineStride"> <int>612</int> 每行字节数=水平分辨率*颜色字节数 </void> <void property="pixelCountPerLine"> <int>204</int> 水平分辨率 </void> <void property="pixelStride"> <int>3</int> 颜色字节数 </void> <void property="redMask"> <long>255</long> </void> <void property="startAddress"> <string>Image + 8</string> 内存地址 </void> </object> </void> <void property="scrollLock"> <boolean>true</boolean> </void> </object> </java> |
GRAY <?xml version="1.0" encoding="UTF-8"?> <java version="1.6.0_13" class="java.beans.XMLDecoder"> <object class="com.ti.dvt.ui.views.core.ImageProp"> <void property="delegateProp"> <object class="com.ti.dvt.ui.views.core.RGBProp"> <void property="blueMask"> <long>255</long> </void> <void property="greenMask"> <long>255</long> </void> <void property="lineCount"> <int>51</int> </void> <void property="lineStride"> <int>204</int> </void> <void property="pixelCountPerLine"> <int>204</int> </void> <void property="pixelStride"> <int>1</int> </void> <void property="redMask"> <long>255</long> </void> <void property="startAddress"> <string>Gray</string> </void> </object> </void> <void property="scrollLock"> <boolean>true</boolean> </ |
本资料来自于网络,仅供学习! |