📄 dm642main.c
字号:
/*等待第一帧数据采集完成*/
while(capNewFrame == 0){}
/*将数据存入显示缓冲区,并清采集完成的标志*/
capNewFrame =0;
for(i=0;i<numLines;i++)
{
/*传送临时Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(tempSrcYbuffer + i * numPixels),
numPixels);
/*传送临时Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(tempDisYbuffer + i * numPixels),
numPixels);
}
/*Gauss边缘检测处理*/
GaussEdge();
/*画边框*/
drawRectangle();
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(tempDisYbuffer + i * numPixels),
(void *)(disYbuffer + i * numPixels),
numPixels);
}
//清除彩色信号
for(i=0;i<0x33ae0;i++)
{
*((Uint8 *)(disCrbuffer +i)) =0x80;
*((Uint8 *)(disCbbuffer +i)) =0x80;
}
/*启动显示模块*/
bt656_display_start(vpHchannel0);
/*建立显示的实时循环*/
for(;;)
{
/*当采集区的数据已经采集好,而显示缓冲区的数据已空*/
if((capNewFrame == 1)&&(disNewFrame == 1))
{
/*将数据装入显示缓冲区,并清采集完成的标志*/
capNewFrame =0;
disNewFrame =0;
for(i=0;i<numLines;i++)
{
/*传送临时Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(tempSrcYbuffer + i * numPixels),
numPixels);
/*传送临时Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(tempDisYbuffer + i * numPixels),
numPixels);
}
/*Gauss边缘检测处理*/
GaussEdge();
/*画边框*/
drawRectangle();
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(tempDisYbuffer + i * numPixels),
(void *)(disYbuffer + i * numPixels),
numPixels);
}
}
}
for(;;)
{}
/*----------------------------------------------------------*/
/*采集与回放*/
}
/*画矩形边框函数的定义*/
void drawRectangle()
{
int i,j;
/*画上边*/
//奇数行
for(i=intALines-4;i<intALines;i++)
{
for(j=intAPixels-6;j<intDPixels+6;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
//偶数行
for(i=numLines/2+intALines-4;i<numLines/2+intALines;i++)
{
for(j=intAPixels-6;j<intDPixels+6;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
/*画下边*/
//奇数行
for(i=intDLines;i<intDLines+4;i++)
{
for(j=intAPixels-6;j<intDPixels+6;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
//偶数行
for(i=numLines/2+intDLines;i<numLines/2+intDLines+4;i++)
{
for(j=intAPixels-6;j<intDPixels+6;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
/*画左边*/
//奇数行
for(i=intALines;i<intDLines;i++)
{
for(j=intAPixels-6;j<intAPixels;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
//偶数行
for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)
{
for(j=intAPixels-6;j<intAPixels;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
/*画右边*/
//奇数行
for(i=intALines;i<intDLines;i++)
{
for(j=intDPixels;j<intDPixels+6;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
//偶数行
for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)
{
for(j=intDPixels;j<intDPixels+6;j++)
{
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = 0x00;
}
}
}
/*Gauss边缘检测处理*/
void GaussEdge()
{
int i,j;
int intTemp;
for(i=intALines;i<intDLines;i++)
{
for(j=intAPixels;j<intDPixels;j++)
{
/*屏幕上奇数行进行处理*/
intTemp = (-2)*(*(Uint8 *)(tempSrcYbuffer + (i-1)*numPixels + (j-2))) + //第一行的程序
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i-1)*numPixels + (j-1))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i-1)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i-1)*numPixels + (j+1))) +
(-2)*(*(Uint8 *)(tempSrcYbuffer + (i-1)*numPixels + (j+2))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j-2))) + //第二行的程序
(8)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j+2))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i)*numPixels + (j-2))) + //第三行的程序
(8)*(*(Uint8 *)(tempSrcYbuffer + (i)*numPixels + (j-1))) +
(24)*(*(Uint8 *)(tempSrcYbuffer + (i)*numPixels + (j))) +
(8)*(*(Uint8 *)(tempSrcYbuffer + (i)*numPixels + (j+1))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i)*numPixels + (j+2))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j-2))) + //第四行的程序
(8)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j+2))) +
(-2)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j-2))) + //第五行的程序
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j-1))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j+1))) +
(-2)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j+2)));
*(Uint8 *)(tempDisYbuffer + i*numPixels + j) = intTemp;
/*屏幕上偶数行进行处理*/
intTemp = (-2)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j-2))) + //第一行的程序
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j-1))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j+1))) +
(-2)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j+2))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + i*numPixels + (j-2))) + //第二行的程序
(8)*(*(Uint8 *)(tempSrcYbuffer + i*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + i*numPixels + (j+2))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j-2))) + //第三行的程序
(8)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j-1))) +
(24)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j))) +
(8)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j+1))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j+2))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j-2))) + //第四行的程序
(8)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (i+1)*numPixels + (j+2))) +
(-2)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i+1)*numPixels + (j-2))) + //第五行的程序
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i+1)*numPixels + (j-1))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i+1)*numPixels + (j))) +
(-4)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i+1)*numPixels + (j+1))) +
(-2)*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i+1)*numPixels + (j+2)));
*(Uint8 *)(tempDisYbuffer + (numLines/2+i)*numPixels + j) = intTemp;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -