Ignore:
Timestamp:
05/29/2009 04:12:50 PM (11 years ago)
Author:
dave
Message:

started writing the LDA classifier

File:
1 edited

Legend:

Unmodified
Added
Removed
  • foam/trunk/vision/src/Image.cpp

    r80 r85  
    3030{ 
    3131        m_Image=cvLoadImage(filename.c_str()); 
    32 } 
    33  
    34 Image::Image(const Image *other) 
    35 { 
    36         m_Image=cvCloneImage(other->m_Image); 
     32        assert(m_Image); 
     33} 
     34 
     35Image::Image(const Image &other) 
     36{ 
     37        m_Image=cvCloneImage(other.m_Image); 
     38} 
     39 
     40Image::Image(const IplImage *other) 
     41{ 
     42        m_Image=cvCloneImage(other); 
    3743} 
    3844 
     
    4046{ 
    4147        cvReleaseImage(&m_Image); 
     48} 
     49 
     50void Image::Clear() 
     51{ 
     52    for(int y=0; y<m_Image->height; y++) 
     53        { 
     54        for(int x=0; x<m_Image->width; x++) 
     55                { 
     56                        CvScalar v; 
     57                         
     58                        for (int c=0; c<m_Image->nChannels; c++) 
     59                        { 
     60                                v.val[c]=0; 
     61                        } 
     62                                                 
     63                        cvSet2D(m_Image,y,x,v); 
     64                } 
     65        } 
     66} 
     67 
     68Image Image::operator-(const Image &other) 
     69{ 
     70        assert(other.m_Image->width == m_Image->width); 
     71        assert(other.m_Image->height == m_Image->height); 
     72        assert(other.m_Image->nChannels == m_Image->nChannels); 
     73 
     74        Image ret(*this); 
     75 
     76    for(int y=0; y<m_Image->height; y++) 
     77        { 
     78        for(int x=0; x<m_Image->width; x++) 
     79                { 
     80                        CvScalar v; 
     81                        v.val[0]=0;v.val[1]=0;v.val[2]=0;v.val[3]=0; 
     82                        for (int c=0; c<m_Image->nChannels; c++) 
     83                        { 
     84                                v.val[c]=abs((int)(cvGet2D(m_Image,y,x).val[c] -  
     85                                                   cvGet2D(other.m_Image,y,x).val[c]));          
     86                        } 
     87                        cvSet2D(ret.m_Image,y,x,v); 
     88                } 
     89        } 
     90        return ret; 
     91} 
     92 
     93Image Image::operator+(const Image &other) 
     94{ 
     95        assert(other.m_Image->width == m_Image->width); 
     96        assert(other.m_Image->height == m_Image->height); 
     97        assert(other.m_Image->nChannels == m_Image->nChannels); 
     98 
     99        Image ret(*this); 
     100 
     101    for(int y=0; y<m_Image->height; y++) 
     102        { 
     103        for(int x=0; x<m_Image->width; x++) 
     104                { 
     105                        CvScalar v; 
     106                        for (int c=0; c<m_Image->nChannels; c++) 
     107                        { 
     108                                v.val[c]=cvGet2D(m_Image,y,x).val[c] +  
     109                                         cvGet2D(other.m_Image,y,x).val[c];              
     110                        } 
     111                        cvSet2D(&ret,y,x,v); 
     112                } 
     113        } 
     114         
     115        return ret; 
    42116} 
    43117 
     
    106180} 
    107181 
    108 void Image::Blit(const Image &image, CvPoint pos) 
     182void Image::Blit(const Image &image, int px, int py) 
    109183{        
    110184        for(int y=0; y<image.m_Image->height; y++) 
     
    112186        for(int x=0; x<image.m_Image->width; x++) 
    113187                { 
    114                         if (x+pos.x>0 && x+pos.x<m_Image->width && 
    115                                 y+pos.y>0 && y+pos.y<m_Image->height) 
    116                         { 
    117                 cvSet2D(m_Image,y+pos.y,x+pos.x,cvGet2D(image.m_Image,y,x)); 
     188                        if (x+px>0 && x+px<m_Image->width && 
     189                                y+py>0 && y+py<m_Image->height) 
     190                        { 
     191                cvSet2D(m_Image,y+py,x+px,cvGet2D(image.m_Image,y,x)); 
    118192                        } 
    119193                } 
Note: See TracChangeset for help on using the changeset viewer.