icetek-dm642-pci.c

来自「ICETEK-DM642-EDUlabv1.3.rar」· C语言 代码 · 共 62 行

C
62
字号
#include "math.h"
#include "ICETEK-DM642-PCI.h"

//工作变量
unsigned char m_dbFrameY[SIMGWIDTH*SIMGHEIGHT];
unsigned char m_dbFrameU[SIMGWIDTH1*SIMGHEIGHT1];
unsigned char m_dbFrameV[SIMGWIDTH1*SIMGHEIGHT1];
unsigned char m_dbTargetImageR[SIMGWIDTH*SIMGHEIGHT];
unsigned char m_dbTargetImageG[SIMGWIDTH*SIMGHEIGHT];
unsigned char m_dbTargetImageB[SIMGWIDTH*SIMGHEIGHT];
unsigned int m_uVideoStatus,m_bFreeze;

void ICETEKDM642PCIBoardInit()
{
	m_uVideoStatus=m_bFreeze=0;
}

void ICETEKDM642PCIYUVRGB()
{
	int i,j;
	int r,g,b,y,u,v;
	unsigned char *py,*pu,*pv,*pr,*pg,*pb;
	
	py=m_dbFrameY; pu=m_dbFrameU; pv=m_dbFrameV;
	pr=m_dbTargetImageR; pg=m_dbTargetImageG; pb=m_dbTargetImageB;
	for ( i=0;i<SIMGHEIGHT;i++ )   
	{  
		for ( j=0;j<SIMGWIDTH;j+=2 )   //列720点,360个32bit,
		{
			u=(*pu); v=(*pv); y=(*py);
			u-=128; v-=128;
			r=y+1.402*u;
			g=y-0.34414*u-0.71414*v;
			b=y+1.772*v;
			if ( r>255 )	r=255;
			else if ( r<0 )	r=0;
			if ( g>255 )	g=255;
			else if ( g<0 )	g=0;
			if ( b>255 )	b=255;
			else if ( b<0 )	b=0;
			(*pr)=r; pr++;
			(*pg)=g; pg++;
			(*pb)=b; pb++;
			py++; y=(*py);
			r=y+1.402*u;
			g=y-0.34414*u-0.71414*v;
			b=y+1.772*v;
			if ( r>255 )	r=255;
			else if ( r<0 )	r=0;
			if ( g>255 )	g=255;
			else if ( g<0 )	g=0;
			if ( b>255 )	b=255;
			else if ( b<0 )	b=0;
			(*pr)=r; pr++;
			(*pg)=g; pg++;
			(*pb)=b; pb++;
			py++; pu++; pv++;
		}
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?