Changeset 1003


Ignore:
Timestamp:
03/01/2011 09:16:56 AM (10 years ago)
Author:
dave
Message:

added crop option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libs/magicsquares/applications/harvest/src/App.cpp

    r998 r1003  
    4545        //int* out; int nselected = cvcamSelectCamera(&out); 
    4646 
    47                 m_Capture = cvCaptureFromCAM(0); 
     47                m_Capture = cvCaptureFromCAM(1); 
    4848        } 
    4949        else 
     
    120120    static bool off=false; 
    121121    static int spirit=0; 
     122    static int crop_x=0; 
     123    static int crop_y=0; 
     124    static int crop_w=camera.m_Image->width; 
     125    static int crop_h=camera.m_Image->height; 
    122126 
    123127        switch (key) 
     
    126130    case 'q': t--; break; 
    127131    case 'w': t++; break; 
     132    case 'e': t-=20; break; 
     133    case 'r': t+=20; break; 
    128134    case 'o': off=!off; break; 
    129135    case 'p': spirit++; break; 
     136    case 'z': crop_x+=10; break;     
     137    case 'x': crop_x-=10; break;     
     138    case 'c': crop_y+=10; break;     
     139    case 'v': crop_y-=10; break;     
     140    case 'b': crop_w+=10; break;     
     141    case 'n': crop_w-=10; break;     
     142    case 'm': crop_h+=10; break;     
     143    case ',': crop_h-=10; break;     
    130144        }                        
     145 
     146    if (crop_x<0) crop_x=0; 
     147    if (crop_x>=camera.m_Image->width) crop_x=camera.m_Image->width;  
     148    if (crop_y<0) crop_x=0; 
     149    if (crop_y>=camera.m_Image->width) crop_x=camera.m_Image->width;  
     150    if (crop_w+crop_x>camera.m_Image->width) 
     151    {  
     152        crop_w=camera.m_Image->width-crop_x; 
     153    }  
     154    if (crop_h+crop_y>camera.m_Image->height) 
     155    {  
     156        crop_h=camera.m_Image->height-crop_y; 
     157    }  
    131158 
    132159    if (off)  
     
    137164    } 
    138165 
    139     Image thresh=camera.RGB2GRAY(); 
     166    Image thresh=camera.RGB2GRAY().SubImage(crop_x,crop_y,crop_w,crop_h); 
    140167    cvThreshold(thresh.m_Image,thresh.m_Image,t,255,CV_THRESH_BINARY); 
    141168    // copy the threshold into a colour image 
     
    154181    { 
    155182        // add the alpha channel 
    156         out = new Image(camera.m_Image->width, 
    157                         camera.m_Image->height, 8, 4);     
     183        Image src=camera.SubImage(crop_x,crop_y,crop_w,crop_h); 
     184        out = new Image(src.m_Image->width, 
     185                        src.m_Image->height, 8, 4);     
    158186         
    159         for(int y=0; y<camera.m_Image->height; y++) 
     187        for(int y=0; y<src.m_Image->height; y++) 
    160188        { 
    161189 
    162             for(int x=0; x<camera.m_Image->width; x++) 
     190            for(int x=0; x<src.m_Image->width; x++) 
    163191            { 
    164                 CvScalar col = cvGet2D(camera.m_Image,y,x); 
     192                CvScalar col = cvGet2D(src.m_Image,y,x); 
    165193                CvScalar alpha = cvGet2D(tofill.m_Image,y,x); 
    166194                if (alpha.val[0]==0 &&  
     
    204232            char buf[256]; 
    205233            sprintf(buf,"%d",currentBlob->GetID()); 
    206             cvPutText(camera.m_Image, buf, cvPoint(rect.x+rect.width/2, 
    207                                                    rect.y+rect.height/2),  
     234            cvPutText(camera.m_Image, buf, cvPoint(crop_x+rect.x+rect.width/2, 
     235                                                   crop_y+rect.y+rect.height/2),  
    208236                      &m_Font, colors[0]); 
    209237             
    210238            cvRectangle(camera.m_Image,  
    211                         cvPoint(rect.x,rect.y),  
    212                         cvPoint(rect.x+rect.width,rect.y+rect.height),  
     239                        cvPoint(crop_x+rect.x,crop_y+rect.y),  
     240                        cvPoint(crop_x+rect.x+rect.width, 
     241                                crop_y+rect.y+rect.height),  
    213242                        colors[1]); 
    214243        } 
     
    235264              &m_Font, colors[0]); 
    236265 
     266    cvRectangle(camera.m_Image,  
     267                cvPoint(crop_x,crop_y),  
     268                cvPoint(crop_x+crop_w,crop_y+crop_h),  
     269                colors[2]); 
    237270 
    238271    if (out!=NULL) delete out; 
Note: See TracChangeset for help on using the changeset viewer.