📄 16.0save.txt
字号:
#include "bf5xx.h"
#include "types.h"
uint8_t Sensor_Reg[SENSOR_REG_SIZE];
section ("sdram0") unsigned char DisplayBuffer[262][960] ;
section ("sdram0")volatile uint16_t VideoInputFrame[LINES_PER_FRAME][PIXEL_PER_LINE];
//unsigned char DisplayBuffer[251574];
//section ("sdram0") uint16_t DisplayBuffer[262][960] ;
section ("sdram0") unsigned char TempBuffer_img[262][960] ;
volatile uint16_t *pDestAddr = &VideoInputFrame[0][0];
/**********************************************************************************
* 名称 :main()
* 功能 :初始化各函数,实现图象捕捉.LCD生成彩条数据,产生彩条
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/
void GBR2RGB24(void)
{
int i,j;
unsigned char r,g,b,y,u,v;
int a,d;
int videoline,videocol;
int disline,discol;
/* for(i=0;i<262;i++)
{
for(j=0;j<960;j++)
{
TempBuffer_img[i][j] = Inputdata[i*960+j+54];
}
}
for(i=0;i<262;i++)
{
for(j=0;j<320;j++)
{
a = TempBuffer_img[i][j*3];
b = TempBuffer_img[i][j*3+2];
TempBuffer_img[i][j*3] = b;
TempBuffer_img[i][j*3+2] = a;
}
}
*/
// UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同:
//U0 Y0 V0 Y1 U2 Y2 V2 Y3 …
/*&
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
YUV=YCbCr
RGB的分量为
R=Y+1.402*(Cr-0.5);
G=Y-0.34414*(Cb-0.5)-0.71414*(Cr-0.5));
b=Y+1.772*(cb-0.5)
R = Y + 1.772(V-128)
B = Y + 1.402(U-128)
G = Y - 0.714(U-128) - 0.344(V-128)
*/
for(i=0;i<240;i++)
{
for(j=0;j<320;j++)
{
videoline=i*2;
videocol=j*2;
u = VideoInputFrame[videoline][videocol]; // u0 y0 v0 y1 u2 y2 v2 y3
y = VideoInputFrame[videoline][videocol]/256; // G = Y - 0.39U - 0.58V 低位数据
v = VideoInputFrame[videoline][videocol+1];// B = Y + 2.03U
/* u = VideoInputFrame[(i-22)*2][j]; // u0 y0 v0 y1 u2 y2 v2 y3
y = VideoInputFrame[(i-22)*2][j]/256; // G = Y - 0.39U - 0.58V 低位数据
v = VideoInputFrame[(i-22)*2][j+1];// B = Y + 2.03U
*/
disline=i;
discol=j*3;
/* DisplayBuffer[disline][discol] = y + 1.14*v; // R = Y + 1.14V 高位的uyvy格式
DisplayBuffer[disline][discol+1] = y - 0.39*u - 0.58*v; // G = Y - 0.39U - 0.58V 低位数据
DisplayBuffer[disline][discol+2] = y + 2.03*u; // B = Y + 2.03U
*/
r = y + 1.14*v; // R = Y + 1.14V 高位的uyvy格式
g = y - 0.39*u - 0.58*v; // G = Y - 0.39U - 0.58V 低位数据
b = y + 2.03*u; // B = Y + 2.03U
DisplayBuffer[disline][discol] = y; // R = Y + 1.14V 高位的uyvy格式
DisplayBuffer[disline][discol+1] = y; // G = Y - 0.39U - 0.58V 低位数据
DisplayBuffer[disline][discol+2] = y; // B = Y + 2.03U
}
}
}
int main()
{
int i,j;
unsigned char t;
Set_PLL(22,5);
Init_SDRAM();
Init_EBIU();
// VideoInputFrame[0][0]=0X1100;
// t=VideoInputFrame[0][0];
Init_Platform();
printf( "\nPlatform initialize success!\n" );
Init_Po3030();
printf( "\nPo3030 initialize success!\n" );
Init_Flash();
Setup_LEDs();
Leda_Off();
Led9_On();
Video_Frame_Capture( (void*) pDestAddr );
GBR2RGB24();
delay(50);
Init_PPIDMA(DisplayBuffer);
Init_Platform_TFT();
printf( "\nDisplay success!\n" );
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -