资源简介
JPEG编码中的正反DCT变换还有量化等操作。

代码片段和文件信息
// jpeg.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include “stdio.h“
#include “math.h“
#include “jpeg.h“
#include
#include
#define DEBUG_FLAG
#define PI 3.14
int remain_bits=8;
char jpeg_word=0;
int y_dc=0cr_dc=0cb_dc=0;
void mcu_gen(int y int *bmp_data int *mcu_data)
{
int ij;
for(i=0;i<16;i++)
for(j=0;j<16;j++)
{
mcu_data[i*16+j]=bmp_data[i*1280+y*16+j];
}
}
void rgb_2_yuv(int *mcu_data_rint *mcu_data_gint *mcu_data_b int *y1_data int *y2_data int *y3_data int *y4_data int *cb_data int *cr_data)
{
/*Y = 0.299*R + 0.587*G + 0.114*B*/
/*Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128*/
/*Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128*/
int ij;
int r_data;
int g_data;
int b_data;
int avg_r[8][8]avg_g[8][8]avg_b[8][8];
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
r_data=mcu_data_r[((0*8+i)*16+0*8+j)];
g_data=mcu_data_g[((0*8+i)*16+0*8+j)];
b_data=mcu_data_b[((0*8+i)*16+0*8+j)];
y1_data[i*8+j]=r_data*0.299+g_data*0.587+b_data*0.114-128;
}
/* for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
printf(“%d“y1_data[i*8+j]);
if(j==7)
printf(“\n“);
}
*/
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
r_data=mcu_data_r[((0*8+i)*16+1*8+j)];
g_data=mcu_data_g[((0*8+i)*16+1*8+j)];
b_data=mcu_data_b[((0*8+i)*16+1*8+j)];
y2_data[i*8+j]=r_data*0.299+g_data*0.587+b_data*0.114-128;
}
/* for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
printf(“%d“y2_data[i*8+j]);
if(j==7)
printf(“\n“);
}
*/
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
r_data=mcu_data_r[((1*8+i)*16+0*8+j)];
g_data=mcu_data_g[((1*8+i)*16+0*8+j)];
b_data=mcu_data_b[((1*8+i)*16+0*8+j)];
y3_data[i*8+j]=r_data*0.299+g_data*0.587+b_data*0.114-128;
}
/* for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
printf(“%d“y3_data[i*8+j]);
if(j==7)
printf(“\n“);
}
*/
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
r_data=mcu_data_r[((1*8+i)*16+1*8+j)];
g_data=mcu_data_g[((1*8+i)*16+1*8+j)];
b_data=mcu_data_b[((1*8+i)*16+1*8+j)];
y4_data[i*8+j]=r_data*0.299+g_data*0.587+b_data*0.114-128;
}
/* for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
printf(“%d“y4_data[i*8+j]);
if(j==7)
printf(“\n“);
}
*/
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
avg_r[i][j]=mcu_data_r[((i*2+0)*16+j*2+0)]+mcu_data_r[((i*2+0)*16+j*2+1)]+mcu_data_r[((i*2+1)*16+j*2+0)]+mcu_data_r[((i*2+1)*16+j*2+1)];
avg_g[i][j]=mcu_data_g[((i*2+0)*16+j*2+0)]+mcu_data_g[((i*2+0)*16+j*2+1)]+mcu_data_g[((i*2+1)*16+j*2+0)]+mcu_data_g[((i*2+1)*16+j*2+1)];
avg_b[i][j]=mcu_data_b[((i*2+0)*16+j*2+0)]+mcu_data_b[((i*2+0)*16+j*2+1)]+mcu_data_b[((i*2+1)*16+j*2+0)]+mcu_data_b[((i*2+1)*16+j*2+1)];
avg_r[i][j]/=4;
avg_g[i][j]/=4;
avg_b[i][j]/=4;
}
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
r_data=avg_r[i][j];
g_data=avg_g[i][j];
b_data=avg_b[i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 94022 2007-11-12 20:13 jpeg-C++\Debug\1.jpg
文件 164864 2010-08-27 10:01 jpeg-C++\Debug\jpeg.bsc
文件 217154 2010-08-27 10:01 jpeg-C++\Debug\jpeg.exe
文件 220960 2010-08-27 10:01 jpeg-C++\Debug\jpeg.ilk
文件 44789 2010-08-27 10:01 jpeg-C++\Debug\jpeg.obj
文件 203728 2010-08-19 09:43 jpeg-C++\Debug\jpeg.pch
文件 492544 2010-08-27 10:01 jpeg-C++\Debug\jpeg.pdb
文件 0 2010-08-27 10:01 jpeg-C++\Debug\jpeg.sbr
文件 2080 2010-08-19 09:43 jpeg-C++\Debug\StdAfx.obj
文件 4084 2010-08-19 09:43 jpeg-C++\Debug\StdAfx.sbr
文件 58368 2010-09-25 16:26 jpeg-C++\Debug\vc60.idb
文件 61440 2010-08-27 10:01 jpeg-C++\Debug\vc60.pdb
文件 509 2007-07-09 17:40 jpeg-C++\Desktop.ini
文件 28181 2010-08-27 09:51 jpeg-C++\jpeg.cpp
文件 4510 2010-08-19 10:35 jpeg-C++\jpeg.dsp
文件 531 2007-07-09 17:40 jpeg-C++\jpeg.dsw
文件 11512 2007-11-18 10:39 jpeg-C++\JPEG.H
文件 58368 2010-09-25 16:27 jpeg-C++\jpeg.ncb
文件 0 2010-08-19 10:35 jpeg-C++\jpeg.ncb (Can‘t open)
文件 55808 2010-09-25 16:27 jpeg-C++\jpeg.opt
文件 242 2010-09-25 16:26 jpeg-C++\jpeg.plg
文件 204 2010-09-25 16:25 jpeg-C++\jpeg.sln
..A..H. 6656 2010-09-25 16:25 jpeg-C++\jpeg.suo
文件 623 2007-11-08 23:31 jpeg-C++\jpegh
文件 623 2007-07-09 17:40 jpeg-C++\jpegh.bak
文件 3056 2007-11-08 23:23 jpeg-C++\jpegheader
文件 3056 2007-11-08 23:20 jpeg-C++\jpegheader.bak
文件 1196 2007-07-09 17:40 jpeg-C++\ReadMe.txt
文件 291 2007-07-09 17:40 jpeg-C++\StdAfx.cpp
文件 769 2007-07-09 17:40 jpeg-C++\StdAfx.h
............此处省略8个文件信息
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
评论
共有 条评论