zoukankan      html  css  js  c++  java
  • 区域标记

    writen by  wqj1212@yahoo.com.cn


    void  Cbiaoji1::biaoji(IplImage *src)
    {
        DWORD t1,t2,t0;
           x_sign
    =0
         m_temp
    =0;
         x_temp
    =0;
         y_temp
    =0;
            temp
    =cvCreateImage(cvSize(src->width,src->height),8,1);
        
    for(int j=0;j<temp->height;j++)
            
    for(int i=0;i<temp->width;i++)
            
    {
                CV_IMAGE_ELEM(temp,uchar,j,i)
    =255;
            }

        
    //    cvZero(temp);
        memset(flag,0,255);
    int width=src->width;
    int height=src->height;
            
    //从左到右标号

      t1
    =::GetTickCount();
            
    for( j=1;j<height-1;j++)    // 每行
            {
                
    for(int i=1;i<width-1;i++)    // 每列
                {
                    
                    
                    
    if(CV_IMAGE_ELEM(src,uchar,j,i)==0)//若当前点为黑点
                    {    
                        
    if(CV_IMAGE_ELEM(src,uchar,j-1,i+1)==0)//右上
                        {      
                            CV_IMAGE_ELEM(temp,uchar,j,i)
    =CV_IMAGE_ELEM(temp,uchar,j-1,i+1);
                            x_temp
    =CV_IMAGE_ELEM(temp,uchar,j-1,i+1);
                            flag[x_temp]
    +=1;    
                            
    if(CV_IMAGE_ELEM(src,uchar,j,i-1)==0&&CV_IMAGE_ELEM(temp,uchar,j,i-1)!=x_temp)//左前
                            {    
                                y_temp
    =CV_IMAGE_ELEM(temp,uchar,j,i-1);
                                
    for(int m=1;m<=height-1;m++)
                                    
    for(int n=1;n<=width-1;n++)
                                    
    {
                                        
    if(CV_IMAGE_ELEM(temp,uchar,m,n)==y_temp)
                                        
    {    
                                            flag[y_temp]
    =0;
                                            CV_IMAGE_ELEM(temp,uchar,m,n)
    =x_temp;
                                            flag[x_temp]
    +=1;
                                        }

                                    }

                            }
    //end//左前
                            if(CV_IMAGE_ELEM(src,uchar,j-1,i-1)==0 &&CV_IMAGE_ELEM(temp,uchar,j-1,i-1)!=x_temp)//左上
                            {
                                y_temp
    =CV_IMAGE_ELEM(temp,uchar,j-1,i-1);
                                
    for(int m=1;m<=height-1;m++)
                                    
    for(int n=1;n<=width-1;n++)
                                    
    {
                                        
    if(CV_IMAGE_ELEM(temp,uchar,m,n)==y_temp)
                                        
    {    
                                            flag[y_temp]
    =0;
                                        CV_IMAGE_ELEM(temp,uchar,m,n)
    =x_temp;
                                            flag[x_temp]
    +=1;
                                        }

                                    }

                            }
    //end//左上
                        }

                        
    else if(CV_IMAGE_ELEM(src,uchar,j-1,i)==0)//正上
                        {
                        CV_IMAGE_ELEM(temp,uchar,j,i)
    =CV_IMAGE_ELEM(temp,uchar,j-1,i);
                            x_temp
    =CV_IMAGE_ELEM(temp,uchar,j-1,i);
                            flag[x_temp]
    +=1;
                        }

                        
    else if(CV_IMAGE_ELEM(src,uchar,j-1,i-1)==0)//左上
                        {
                            CV_IMAGE_ELEM(temp,uchar,j,i)
    =CV_IMAGE_ELEM(temp,uchar,j-1,i-1);
                            x_temp
    =CV_IMAGE_ELEM(temp,uchar,j-1,i-1);
                            flag[x_temp]
    +=1;
                        }

                        
    else if(CV_IMAGE_ELEM(src,uchar,j,i-1)==0)//左前
                        {
                            CV_IMAGE_ELEM(temp,uchar,j,i)
    =CV_IMAGE_ELEM(temp,uchar,j,i-1);
                            x_temp
    =CV_IMAGE_ELEM(temp,uchar,j,i-1);
                            flag[x_temp]
    +=1;
                        }

                        
    else//没有
                        {                
                            
    ++x_sign;
                            m_temp
    =x_sign;
                            CV_IMAGE_ELEM(temp,uchar,j,i)
    =m_temp;
                            flag[m_temp]
    =1;
                        
    //    cout<<x_sign<<endl;
                        }

                    }
    //end if
                }
    // 每列
            t2=::GetTickCount();        
            }

            t0
    =::GetTickCount();
                cout
    <<"时间t2-t1为"<<t2-t1<<"t0-t2为"<<t0-t2<<"to-t1时为:"<<t0-t1<<endl;
            }
    //end 每行
  • 相关阅读:
    如何面试程序员?
    类似猪八戒网的网站
    存储过程
    一个不错的网站(博客制作参考)
    用触发器来实现级联更新级联删除
    用触发器进行级联删除
    数据库触发器详解
    浅谈数据库中的存储过程
    JDBC连接数据库
    Java递归函数
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1009662.html
Copyright © 2011-2022 走看看