Changeset 998


Ignore:
Timestamp:
02/28/2011 02:40:32 PM (9 years ago)
Author:
dave
Message:

select spirit, opencv updated to fix camera

Location:
libs/magicsquares/applications/harvest
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • libs/magicsquares/applications/harvest/Makefile

    r783 r998  
    1212CCFLAGS = -I../../src `pkg-config --cflags opencv` -ggdb -Wall -O3 -ffast-math -Wno-unused -DTIXML_USE_STL  
    1313LDFLAGS = -L../../ 
    14 LIBS    = `pkg-config --libs opencv` -lYARP_dev -lYARP_sig -lYARP_OS -lACE -lmagicsquares  
     14LIBS    = `pkg-config --libs opencv` -lmagicsquares  
    1515 
    1616CC = g++ 
  • libs/magicsquares/applications/harvest/src/App.cpp

    r783 r998  
    4141        if (filename=="") 
    4242        { 
     43 
     44        //int ncams = cvcamGetCamerasCount( );    //returns the number of available cameras in the system 
     45        //int* out; int nselected = cvcamSelectCamera(&out); 
     46 
    4347                m_Capture = cvCaptureFromCAM(0); 
    4448        } 
     
    101105} 
    102106 
     107char *spirits[]={"CanopySpirit","VerticalSpirit","CoverSpirit"}; 
     108 
    103109void App::Update(Image &camera) 
    104110{        
     
    107113 
    108114        int key=cvWaitKey(10); 
    109          
    110         static int t=200; 
    111     bool viewthresh=false; 
     115 
     116//    usleep(500); 
     117         
     118        static int t=150; 
     119    static bool viewthresh=false; 
     120    static bool off=false; 
     121    static int spirit=0; 
    112122 
    113123        switch (key) 
    114124        { 
    115     case 'q': t--; viewthresh=true; break; 
    116     case 'w': t++; viewthresh=true; break; 
     125    case 't': viewthresh=!viewthresh; break; 
     126    case 'q': t--; break; 
     127    case 'w': t++; break; 
     128    case 'o': off=!off; break; 
     129    case 'p': spirit++; break; 
    117130        }                        
     131 
     132    if (off)  
     133    { 
     134        sleep(1); 
     135        cerr<<"off..."<<endl; 
     136        return; 
     137    } 
    118138 
    119139    Image thresh=camera.RGB2GRAY(); 
    120140    cvThreshold(thresh.m_Image,thresh.m_Image,t,255,CV_THRESH_BINARY); 
    121     //cvFloodFill(thresh.m_Image,cvPoint(10,10), cvScalar(255),cvScalar(0),cvScalar(255)); 
     141    // copy the threshold into a colour image 
     142    Image tofill=thresh.GRAY2RGB(); 
     143    cvFloodFill(tofill.m_Image,cvPoint(10,10), CV_RGB(0,255,0),cvScalar(0),cvScalar(255)); 
    122144     
    123145    CBlobResult blobs; 
    124146    blobs = CBlobResult( thresh.m_Image, NULL, 255 ); 
    125147    // exclude the ones smaller than param2 value 
    126     blobs.Filter( blobs, B_EXCLUDE, CBlobGetArea(), B_LESS, 10); 
    127  
    128     if (viewthresh) camera=thresh; 
     148    blobs.Filter( blobs, B_EXCLUDE, CBlobGetArea(), B_LESS, 100); 
    129149 
    130150    CBlob *currentBlob; 
     
    143163            { 
    144164                CvScalar col = cvGet2D(camera.m_Image,y,x); 
    145                 CvScalar alpha = cvGet2D(thresh.m_Image,y,x); 
    146                 col.val[3]=256-alpha.val[0]; 
     165                CvScalar alpha = cvGet2D(tofill.m_Image,y,x); 
     166                if (alpha.val[0]==0 &&  
     167                    alpha.val[1]==255 &&  
     168                    alpha.val[2]==0) 
     169                    col.val[3]=0; 
     170                else 
     171                    col.val[3]=255; 
    147172                cvSet2D(out->m_Image,y,x,col); 
    148173            } 
    149174        }    
     175    } 
     176 
     177    if (key=='s') 
     178    { 
     179        cerr<<"deleting old images in islands/"<<endl; 
     180        int r=system("rm islands/*"); 
    150181    } 
    151182     
     
    173204            char buf[256]; 
    174205            sprintf(buf,"%d",currentBlob->GetID()); 
    175             cvPutText(camera.m_Image, buf, cvPoint(rect.x,rect.y), &m_Font, colors[0]); 
     206            cvPutText(camera.m_Image, buf, cvPoint(rect.x+rect.width/2, 
     207                                                   rect.y+rect.height/2),  
     208                      &m_Font, colors[0]); 
    176209             
    177210            cvRectangle(camera.m_Image,  
     
    182215    } 
    183216 
     217    if (key=='s') 
     218    { 
     219        cerr<<"copying images to server"<<endl; 
     220        //int r=system("scp -r islands garden@t0.fo.am:/home/garden/GerminationX/oak/"); 
     221        string path("/home/dave/code/lirec/scenarios/GerminationX/oak/public/"); 
     222        path+=string(spirits[spirit%3]); 
     223        string command=string("rm ")+path+string("/*.*"); 
     224        int r=system(command.c_str()); 
     225        string command2=string("cp islands/* ")+path; 
     226        r=system(command2.c_str()); 
     227        //cerr<<"finished copying...("<<r<<")"<<endl; 
     228    } 
     229 
     230    if (viewthresh) camera=tofill; 
     231 
     232    char buf[256]; 
     233    sprintf(buf,"spirit: %s thresh: %d", spirits[spirit%3], t); 
     234    cvPutText(camera.m_Image, buf, cvPoint(10,10),  
     235              &m_Font, colors[0]); 
     236 
     237 
    184238    if (out!=NULL) delete out; 
    185239} 
  • libs/magicsquares/applications/harvest/src/Blob.h

    r783 r998  
    1414 
    1515//! Disable warnings referred to 255 character truncation for the std:map 
    16 #pragma warning( disable : 4786 )  
     16//#pragma warning( disable : 4786 )  
    1717 
    1818#ifndef CBLOB_INSPECTA_INCLUDED 
  • libs/magicsquares/applications/harvest/src/BlobContour.h

    r783 r998  
    55#include "list" 
    66#include "cv.h" 
    7 #include "cxtypes.h" 
     7//#include "cxtypes.h" 
    88 
    99//! Type of chain codes 
Note: See TracChangeset for help on using the changeset viewer.