⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dm642main.c

📁 基于ti公司的DM642的图像预处理的关键程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	/*等待第一帧数据采集完成*/
	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 + -