📄 image change.c
字号:
//#include "stdio.h"
/*
void Get_ITU656_frame_from_NTSC(unsigned char*c_in,unsigned char *c_out)
{
int i,line;
int row=0,count;
for(line=1;line<526;line++)
{
if((3<line && line<21) || (263<line && line<267))//奇场的场消隐
{ //255,0,0,182
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=182;
c_out+=4;
for(i=0;i<134;i++)
{
*c_out=128;
*(c_out+1)=16;
c_out+=2;
}
//255,0,0,171
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=171;
c_out+=4;
for(i=0;i<288;i++)
{
*c_out=0;
*(c_out+1)=0;
*(c_out+2)=0;
*(c_out+3)=0;
*(c_out+4)=0;
c_out+=5;
}
}
else if(line<4 || (266<line && line<283))//偶场的场消隐
{ //255,0,0,241
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=241;
c_out+=4;
for(i=0;i<268/2;i++)
{
*c_out=128;
*(c_out+1)=16;
c_out+=2;
}
//255,0,0,236
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=236;
c_out+=4;
for(i=0;i<1440;i++)
{
*c_out=0;
c_out++;
}
}
else if(20<line && line<264)//奇场的有效行
{
row=2*(line-21);
//255,0,0,157
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=157;
c_out+=4;
for(i=0;i<268/2;i++)
{
*c_out=128;
*(c_out+1)=16;
c_out+=2;
}
//255,0,0,128
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=128;
c_out+=4;
count=1440*row;
for(i=0;i<1440;i++)
{
*c_out=*(c_in+i+count);
c_out++;
}
}
else //偶场的有效行
{
row=2*(line-283)+1;
//255,0,0,218
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=218;
c_out+=4;
for(i=0;i<268/2;i++)
{
*c_out=128;
*(c_out+1)=16;
c_out+=2;
}
//255,0,0,199
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=199;
c_out+=4;
count=1440*row;
for(i=0;i<1440;i++)
{
*c_out=*(c_in+i+1440*row);
c_out++;
}
}
}
}
*/
void Get_ITU656_frame_from_NTSC(unsigned char*c_in,unsigned char *c_out)
{
int i,line;
int row=0,count;
for(line=1;line<526;line++)
{
if((3<line && line<21) || (263<line && line<267))//奇场的场消隐
{ //255,0,0,182
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=182;
c_out+=4;
for(i=0;i<67;i++) //67=268/4
{
*c_out=128; *(c_out+1)=16;
*(c_out+2)=128; *(c_out+3)=16;
c_out+=4;
}
//255,0,0,171
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=171;
c_out+=4;
for(i=0;i<144;i++) //144=1440/10
{
*c_out=0; *(c_out+1)=0; *(c_out+2)=0;
*(c_out+3)=0; *(c_out+4)=0; *(c_out+5)=0;
*(c_out+6)=0; *(c_out+7)=0; *(c_out+8)=0;
*(c_out+9)=0; c_out+=10;
}
}
else if(line<4 || (266<line && line<283))//偶场的场消隐
{ //255,0,0,241
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=241;
c_out+=4;
for(i=0;i<67;i++)
{
*c_out=128; *(c_out+1)=16;
*(c_out+2)=128; *(c_out+3)=16;
c_out+=4;
}
//255,0,0,236
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=236;
c_out+=4;
for(i=0;i<144;i++)
{
*c_out=0; *(c_out+1)=0; *(c_out+2)=0;
*(c_out+3)=0; *(c_out+4)=0; *(c_out+5)=0;
*(c_out+6)=0; *(c_out+7)=0; *(c_out+8)=0;
*(c_out+9)=0; c_out+=10;
}
}
else if(20<line && line<264)//奇场的有效行
{
row=2*(line-21)+1; count=1440*row;
//255,0,0,157
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=157;
c_out+=4;
for(i=0;i<67;i++)
{
*c_out=128; *(c_out+1)=16;
*(c_out+2)=128; *(c_out+3)=16;
c_out+=4;
}
//255,0,0,128
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=128;
c_out+=4;
for(i=0;i<1440;)
{
*c_out=*(c_in+i+count);
*(c_out+1)=*(c_in+i+count+1);
*(c_out+2)=*(c_in+i+count+2);
*(c_out+3)=*(c_in+i+count+3);
*(c_out+4)=*(c_in+i+count+4);
c_out+=5; i+=5;
}
/*
for(i=0;i<1440;i++)
{
*c_out=*(c_in+i+count);
c_out++;
}*/
}
else //偶场的有效行
{
row=2*(line-283); count=1440*row;
//255,0,0,218
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=218;
c_out+=4;
for(i=0;i<67;i++)
{
*c_out=128; *(c_out+1)=16;
*(c_out+2)=128; *(c_out+3)=16;
c_out+=4;
}
//255,0,0,199
*c_out=255;*(c_out+1)=0;*(c_out+2)=0;*(c_out+3)=199;
c_out+=4;
for(i=0;i<1440;)
{
*c_out=*(c_in+i+count);
*(c_out+1)=*(c_in+i+count+1);
*(c_out+2)=*(c_in+i+count+2);
*(c_out+3)=*(c_in+i+count+3);
*(c_out+4)=*(c_in+i+count+4);
c_out+=5; i+=5;
}
}
}
}
#define str_ad 0x20010000
void Read_Flash (unsigned char* buffer_656)
{
unsigned char* pic_in,*pic_in_V;
unsigned char* pic_Y,*pic_U,*pic_V;
long i ;
int line;
i = str_ad+349920;
pic_in_V=str_ad+437400;//437400=720*486+360*243
pic_U = buffer_656; //输出U的首地址下分别是Y和V
pic_Y = buffer_656+1;
pic_V = buffer_656+2;
for(pic_in=str_ad;pic_in<i;) //输出Y的值 349920=720*486
{
*(pic_Y)=*(pic_in);
*(pic_Y+2)=*(pic_in+1);
*(pic_Y+4)=*(pic_in+2);
*(pic_Y+6)=*(pic_in+3);
*(pic_Y+8)=*(pic_in+4);
pic_Y+=10; pic_in+=5;
}
// printf("pic_in=%d",pic_in);
for(line=0;line<243;line++) //将4:2:0的U,V转成4:2:2并输出U,V
{
for(i=0;i<360;i++)
{
*(pic_U)=*(pic_in+i);
*(pic_V)=*(pic_in_V+i);
pic_V+=4; pic_U+=4;
}
for(i=0;i<360;i++)
{
*(pic_U)=*(pic_in+i);
*(pic_V)=*(pic_in_V+i);
pic_V+=4; pic_U+=4;
}
pic_in+=360;
pic_in_V+=360;
// printf("pic_in=%0x,pic_in_V=%0x\n",pic_in,pic_in_V);
}
}
#define pic_count 4
void get_fourpic_form_one(unsigned char *image,unsigned char *pic1,unsigned char *pic2,unsigned char *pic3,unsigned char *pic4)
{
int l,i,p_numb=0;
unsigned char *pic_pointer,*flash;
for(;p_numb<pic_count;p_numb++)
{
if(p_numb==0) { pic_pointer=pic1; flash=image; } //指针来指向当前的输出图片数据和读出的首地址
else if(p_numb==1) { pic_pointer=pic2; flash=image+720; }
else if(p_numb==2) { pic_pointer=pic3; flash=image+349920; }//349920=1440*243
else { pic_pointer=pic4; flash=image+349920+720; }
for(l=0;l<243;l++) //把小图转成大图
{
for(i=0;i<1440;)
{
*(pic_pointer+i )=*flash;
*(pic_pointer+i+1)=*(flash+1);
*(pic_pointer+i+2)=*(flash+2);
*(pic_pointer+i+3)=*(flash+3);
*(pic_pointer+i+4)=*flash;
*(pic_pointer+i+5)=*(flash+1);
*(pic_pointer+i+6)=*(flash+2);
*(pic_pointer+i+7)=*(flash+3);
flash+=4; i+=8;
}
flash-=720; pic_pointer+=1440;
for(i=0;i<1440;)
{
*(pic_pointer+i )=*flash;
*(pic_pointer+i+1)=*(flash+1);
*(pic_pointer+i+2)=*(flash+2);
*(pic_pointer+i+3)=*(flash+3);
*(pic_pointer+i+4)=*flash;
*(pic_pointer+i+5)=*(flash+1);
*(pic_pointer+i+6)=*(flash+2);
*(pic_pointer+i+7)=*(flash+3);
flash+=4; i+=8;
}
flash+=720; pic_pointer+=1440;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -