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

📄 opta.c

📁 指纹识别C语言代码
💻 C
字号:
#include "stdio.h"
int image_second(unsigned char *data,int m,int n);



void binary_noise(unsigned char *data)
{
	unsigned char *image_in=data;
	int i,j;
    unsigned	char p[9];
	for(i=1;i<299;i++)
	{
		for(j=1;j<255;j++)
		{
			p[1]=*(image_in+i*256+j+1)/255;
			p[2]=*(image_in+(i-1)*256+j+1)/255;
			p[3]=*(image_in+(i-1)*256+j)/255;
            p[4]=*(image_in+(i-1)*256+j-1)/255;
			p[5]=*(image_in+i*256+j-1)/255;
            p[6]=*(image_in+(i+1)*256+j-1)/255;
            p[7]=*(image_in+(i+1)*256+j)/255;
            p[8]=*(image_in+(i+1)*256+j+1)/255;

			if(*(image_in+i*256+j)==255)
			{
				if(!p[1]+!p[3]+!p[5]+!p[7]>=3)
				//	printf("!p[1]=%d\n",!p[1]);
					*(image_in+i*256+j)=0;
			}

		    if(*(image_in+i*256+j)==0)
			{
				if(((!p[1]+!p[2]+!p[3])*(!p[5]+!p[6]+!p[7])+(!p[3]+!p[4]+!p[5])*(!p[7]+!p[8]+!p[1]))==1)
					*(image_in+i*256+j)=255;
			}
		}
	}
}

void image_opta(unsigned char *data)
{
	unsigned char *image_in=data;
	int i,j,flag;
    int  k;
	char p[9];
	 unsigned char *image_data,*image_temp;
	
 
   if((image_temp=malloc(300*256*sizeof(unsigned char*)))==NULL) printf("error allocating");
   image_data=image_temp;
  
   
   for(i=300*256;i>0;i--)
   {
	   *image_temp++=0;
   }
flag=1;

   while(flag==1)
   {
	   flag=0;
	for(i=2;i<298;i++)
	{
		for(j=2;j<254;j++)
		{  
		
			if(*(image_in+i*256+j)==255) continue;
	
			//a
			if( (*(image_in+(i-1)*256+j-1)==255)
				&&(*(image_in+(i-1)*256+j)==255)
				&&(*(image_in+(i-1)*256+j+1)==255)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+(i+1)*256+j-1)==0)
				&&(*(image_in+(i+1)*256+j)==0)
				&&(*(image_in+(i+1)*256+j+1)==0) )
			{
		          k=image_second(image_in,i,j);
				  if(k==0)
				  {
                   *(image_data+i*256+j)=255;
				   
				  }
				  flag=1;
				   continue;
			}
            //b
		    if((*(image_in+(i-1)*256+j-1)==255)
				&&(*(image_in+(i-1)*256+j+1)==0)
				&&(*(image_in+i*256+j-1)==255)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+i*256+j+1)==0)
				&&(*(image_in+(i+1)*256+j-1)==255)
				&&(*(image_in+(i+1)*256+j+1)==0))
			{
                  k=image_second(image_in,i,j);
				  if(k==0)
				  {
                   *(image_data+i*256+j)=255;
				  
				  }
				   flag=1;
				   continue;
			}
			//c
			if((*(image_in+(i-1)*256+j-1)==0)
				&&(*(image_in+(i-1)*256+j)==0)
				&&(*(image_in+(i-1)*256+j+1)==0)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+(i+1)*256+j-1)==255)
				&&(*(image_in+(i+1)*256+j)==255)
				&&(*(image_in+(i+1)*256+j+1)==255))
			{
                  k=image_second(image_in,i,j);
				  if(k==0)
				  {
                   *(image_data+i*256+j)=255;
				   
				  }
				  flag=1;
				   continue;
			}
			//d
			if((*(image_in+(i-1)*256+j-1)==0)
				&&(*(image_in+(i-1)*256+j+1)==255)
				&&(*(image_in+i*256+j-1)==0)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+i*256+j+1)==255)
				&&(*(image_in+(i+1)*256+j-1)==0)
				&&(*(image_in+(i+1)*256+j+1)==255))
			{
                   k=image_second(image_in,i,j);
				  if(k==0)
				  {
                   *(image_data+i*256+j)=255;
				  
				  }
				   flag=1;
				   continue;
			}
			//e
			if((*(image_in+(i-1)*256+j)==255)
				&&(*(image_in+(i-1)*256+j+1)==255)
				&&(*(image_in+i*256+j-1)==0)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+i*256+j+1)==255)
				&&(*(image_in+(i+1)*256+j)==0))
			{
                  k=image_second(image_in,i,j);
				  if(k==0)
				  {
                   *(image_data+i*256+j)=255;
				   
				  }
				  flag=1;
				   continue;
			}
			//f
			if((*(image_in+(i-1)*256+j-1)==255)
				&&(*(image_in+(i-1)*256+j)==255)
				&&(*(image_in+i*256+j-1)==255)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+i*256+j+1)==0)
				&&(*(image_in+(i+1)*256+j)==0))
			{
                  k=image_second(image_in,i,j);
				  if(k==0)
				   {
                   *(image_data+i*256+j)=255;
				   
				  }
				  flag=1;
				   continue;
			}
			//g
			if((*(image_in+(i-1)*256+j)==0)
				&&(*(image_in+i*256+j-1)==255)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+i*256+j+1)==0)
				&&(*(image_in+(i+1)*256+j-1)==255)
				&&(*(image_in+(i+1)*256+j)==255))
			{
                    k=image_second(image_in,i,j);
				    if(k==0)
					{
                   *(image_data+i*256+j)=255;
				  
					}
				  
                  flag=1;
				   continue;
			}
			//h
			if((*(image_in+(i-1)*256+j)==0)
				&&(*(image_in+i*256+j-1)==0)
				&&(*(image_in+i*256+j)==0)
				&&(*(image_in+i*256+j+1)==255)
				&(*(image_in+(i+1)*256+j)==255)
				&&(*(image_in+(i+1)*256+j+1)==255))
			{
                 k=image_second(image_in,i,j);
				   if(k==0)
				  {
                   *(image_data+i*256+j)=255;
				   
				 }
				  flag=1;
				   continue;
			}
		}
	}
	for(i=2;i<298;i++)
        {
		   for(j=2;j<254;j++)
           {     
			   if(*(image_data+i*256+j)==255)              
                      *(image_in+i*256+j)=255;
		   }
		 }
}

		 
	
  
}
int image_second(unsigned char *data,int m,int n)
{
  unsigned char *image_temp=data;
int k=0;



	  //a
	  if( (*(image_temp+(m-1)*256+n)==0)
		  &&(*(image_temp+(m-1)*256+n+2)==255)
		  &&(*(image_temp+m*256+n-1)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==0)
		  &&(*(image_temp+m*256+n+2)==255)
		  &&(*(image_temp+(m+1)*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n+2)==255)    )
	  {
		  k=1;
		
	  }
	  //b
	  if( (*(image_temp+(m-1)*256+n+1)==255)
		  &&(*(image_temp+(m-1)*256+n+2)==255)
		  &&(*(image_temp+m*256+n-1)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==0)
		  &&(*(image_temp+m*256+n+2)==255)
		  &&(*(image_temp+(m+1)*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n+1)==0)    )
	  {
		  k=1;
		
	  }
	  //c
	  if( (*(image_temp+(m-1)*256+n)==0)
		  &&(*(image_temp+(m-1)*256+n+1)==0)
		  &&(*(image_temp+m*256+n-1)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==0)
		  &&(*(image_temp+m*256+n+2)==255)
		  &&(*(image_temp+(m+1)*256+n+1)==255)
		  &&(*(image_temp+(m+1)*256+n+2)==255)    )
	  {
		  k=1;
		  
	  }
	  //d
	  if( (*(image_temp+(m-1)*256+n)==255)		  
		  &&(*(image_temp+m*256+n-1)==0)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==0)		  
		  &&(*(image_temp+(m+1)*256+n)==0)
		  &&(*(image_temp+(m+2)*256+n-1)==255)
		  &&(*(image_temp+(m+2)*256+n)==255)
		  &&(*(image_temp+(m+2)*256+n+1)==255)  )
	  {
		  k=1;
		 
	  }
	  //e
	  if( (*(image_temp+(m-1)*256+n)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n-1)==0)
		  &&(*(image_temp+(m+1)*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n+1)==255)
		  &&(*(image_temp+(m+2)*256+n)==255)
		  &&(*(image_temp+(m+2)*256+n+1)==255)    )
	  {
		  k=1;
		
	  }
	  //f
	  if( (*(image_temp+(m-1)*256+n)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n-1)==255)
		  &&(*(image_temp+(m+1)*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n+1)==0)
		  &&(*(image_temp+(m+2)*256+n-1)==255)
		  &&(*(image_temp+(m+2)*256+n)==255)    )
	  {
		  k=1;
		 
	  }
	  //g
	  if( (*(image_temp+(m-1)*256+n-1)==255)
		  &&(*(image_temp+(m-1)*256+n)==255)
		  &&(*(image_temp+(m-1)*256+n+1)==0)
		  &&(*(image_temp+m*256+n-1)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==0)
		  &&(*(image_temp+m*256+n+2)==255)
		  &&(*(image_temp+(m+1)*256+n)==0)
          &&(*(image_temp+(m+1)*256+n+1)==255)
		  &&(*(image_temp+(m+1)*256+n+2)==255)    )
	  {
		  k=1;
		 
	  }
	  //h
	  if( (*(image_temp+(m-1)*256+n-1)==0)
		  &&(*(image_temp+(m-1)*256+n)==255)
		  &&(*(image_temp+m*256+n-1)==0)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==255)
		  &&(*(image_temp+(m+1)*256+n-1)==255)
		  &&(*(image_temp+(m+1)*256+n)==0)
		  &&(*(image_temp+(m+1)*256+n+1)==0)    )
	  {
		  k=1;
	
	  }
	  //i
	  if( (*(image_temp+(m-1)*256+n)==0)
		  &&(*(image_temp+(m-1)*256+n+1)==255)
		  &&(*(image_temp+(m-1)*256+n+2)==255)
		  &&(*(image_temp+m*256+n-1)==255)
		  &&(*(image_temp+m*256+n)==0)
		  &&(*(image_temp+m*256+n+1)==0)
		  &&(*(image_temp+m*256+n+2)==255)
		  &&(*(image_temp+(m+1)*256+n)==255)
		  &&(*(image_temp+(m+1)*256+n+1)==0)
		  &&(*(image_temp+(m+1)*256+n+2)==255)    )
	  {
		  k=1;
		
	  }
  	
return(k);
}






⌨️ 快捷键说明

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