如何用Opencv求图像的灰度投影曲线

   眼睛定位方法中利用灰度投影函数,假设I(x,y)表示点(x,y)处的像素灰度值, 在区间[x1,x2]和[y1,y2] 内的垂直积分投影函数

   int* v = NULL;//垂直投影


   int* h = NULL;//水平投影
   
   CvScalar s,t;//投影时矩阵的元素

         IplImage* pBinaryImg = NULL;//二值化后图像

   IplImage* pVerticImg = NULL;//垂直投影图像

   IplImage* pHorizImg = NULL;//水平投影图像

   int x,y;//图像像素坐标                                
                                v=new int[pBinaryImg->width]; 
      h=new int[pBinaryImg->height];
      for(i=0;i<pBinaryImg->width;i++)  
         v[i]=0; 
      for(i=0;i<pBinaryImg->height;i++)  
         h[i]=0;

      for( x=0;x<pBinaryImg->width;x++)      
      {  
         for(y=0;y<pBinaryImg->height;y++)
         {  
            s=cvGet2D(pBinaryImg,y,x);    //t=cvGet2D(paint,y,x);       
            if(s.val[0]==0)    
               v[x]++;     //cvSet2D(paint,y,x,t);        
         }    
      }
      
      for( y=0;y<pBinaryImg->height;y++)
      {  
         for( x=0;x<pBinaryImg->width;x++)
         {   
            s=cvGet2D(pBinaryImg,y,x);    //t=cvGet2D(paint,y,x);       
            if(s.val[0]==0)    
               h[y]++;         
         }    
      }

      pVerticImg = cvCreateImage( cvGetSize(pBinaryImg),8, 1 );
      pHorizImg = cvCreateImage( cvGetSize(pBinaryImg),8, 1 );
      cvZero(pVerticImg);
      cvZero(pHorizImg);

      for(x=0;x<pBinaryImg->width;x++)
      {  
         for(y=0;y<v[x];y++)
         {   
            t=cvGet2D(pVerticImg,y,x);   //s=cvGet2D(paint,y,x);    //t=cvGet2D(paint,y,x); 
            t.val[0]=255;   
            cvSet2D(pVerticImg,y,x,t);         
         }   
      }
      
      for(y=0;y<pBinaryImg->height;y++)
      {  
         for(x=0;x<h[y];x++)
         {   
            t=cvGet2D(pHorizImg,y,x);   //s=cvGet2D(paint,y,x);    //t=cvGet2D(paint,y,x); 
            t.val[0]=255;   
            cvSet2D(pHorizImg,y,x,t);        
         }    

      }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值