We closed this forum 18 June 2010. It has served us well since 2005 as the ALPHA forum did before it from 2002 to 2005. New discussions are ongoing at the new URL http://forum.processing.org. You'll need to sign up and get a new user account. We're sorry about that inconvenience, but we think it's better in the long run. The content on this forum will remain online.
IndexProgramming Questions & HelpPrograms › OpenCV Blob example error
Page Index Toggle Pages: 1
OpenCV Blob example error (Read 1098 times)
OpenCV Blob example error
Apr 26th, 2010, 7:01am
 
I started playing with OpenCv and I constantly get the same error in the blob example (code below ).

Here is a screen shot of the error :

...


and here is the code
Quote:
import hypermedia.video.*;



OpenCV opencv;

int w = 320;
int h = 240;
int threshold = 80;

boolean find=true;

PFont font;

void setup() {

   size( w*2+30, h*2+30 );

   opencv = new OpenCV( this );
   opencv.capture(w,h);
   
   font = loadFont( "AndaleMono.vlw" );
   textFont( font );

   println( "Drag mouse inside sketch window to change threshold" );
   println( "Press space bar to record background image" );

}



void draw() {

   background(0);
   opencv.read();
   //opencv.flip( OpenCV.FLIP_HORIZONTAL );

   image( opencv.image(), 10, 10 );                  // RGB image
   image( opencv.image(OpenCV.GRAY), 20+w, 10 );   // GRAY image
   image( opencv.image(OpenCV.MEMORY), 10, 20+h ); // image in memory

   opencv.absDiff();
   opencv.threshold(threshold);
   image( opencv.image(OpenCV.GRAY), 20+w, 20+h ); // absolute difference image


   // working with blobs
   Blob[] blobs = opencv.blobs( 100, w*h/3, 20, true );

   noFill();

   pushMatrix();
   translate(20+w,20+h);
   
   for( int i=0; i<blobs.length; i++ ) {

       Rectangle bounding_rect      = blobs[i].rectangle;
       float area = blobs[i].area;
       float circumference = blobs[i].length;
       Point centroid = blobs[i].centroid;
       Point[] points = blobs[i].points;

       // rectangle
       noFill();
       stroke( blobs[i].isHole 128 : 64 );
       rect( bounding_rect.x, bounding_rect.y, bounding_rect.width, bounding_rect.height );


       // centroid
       stroke(0,0,255);
       line( centroid.x-5, centroid.y, centroid.x+5, centroid.y );
       line( centroid.x, centroid.y-5, centroid.x, centroid.y+5 );
       noStroke();
       fill(0,0,255);
       text( area,centroid.x+5, centroid.y+5 );


       fill(255,0,255,64);
       stroke(255,0,255);
       if ( points.length>0 ) {
           beginShape();
           for( int j=0; j<points.length; j++ ) {
               vertex( points[j].x, points[j].y );
           }
           endShape(CLOSE);
       }

       noStroke();
       fill(255,0,255);
       text( circumference, centroid.x+5, centroid.y+15 );

   }
   popMatrix();

}

void keyPressed() {
   if ( key==' ' ) opencv.remember();
}

void mouseDragged() {
   threshold = int( map(mouseX,0,width,0,255) );
}

public void stop() {
   opencv.stop();
   super.stop();
}


I can run other openCv parts but I get an error in the rect . Any idea why

I already reinstalled OpenCv and restarted my Mac
Re: OpenCV Blob example error
Reply #1 - Apr 26th, 2010, 7:07am
 
I can't see your image, but you are hitting something becoming a FAQ for Processing 1.1...
Short answer: add import java.awt.*; at the start of the sketch.
It was done by default in previous versions, now it must be explicit.
Re: OpenCV Blob example error
Reply #2 - Apr 26th, 2010, 7:12am
 
Thank you PhiLho you saved me it works perfectly now Smiley
Page Index Toggle Pages: 1