Difference between revisions of "Tutorial Processing"

From BoofCV
Jump to navigationJump to search
m
m
Line 6: Line 6:


Usage examples can be found on [https://github.com/lessthanoptimal/BoofCV/tree/master/integration/processing/examples GitHub in the examples directory] and browsing through those examples is the best way to learn how to use BoofCV in processing.  The interface provided is more object oriented than most of BoofCV and allows for commands to be chained in a sequence.  Consider the example below, contours are found by chaining several commands together; threshold, erode, and contour.  Operations which don't have a nice easy to use interface can also be used.  Just code them up as usual.
Usage examples can be found on [https://github.com/lessthanoptimal/BoofCV/tree/master/integration/processing/examples GitHub in the examples directory] and browsing through those examples is the best way to learn how to use BoofCV in processing.  The interface provided is more object oriented than most of BoofCV and allows for commands to be chained in a sequence.  Consider the example below, contours are found by chaining several commands together; threshold, erode, and contour.  Operations which don't have a nice easy to use interface can also be used.  Just code them up as usual.
Consult the [https://github.com/lessthanoptimal/BoofCV/blob/master/integration/processing/README.TXT README.TXT] for instructions on how to build Processing support using Gradle.


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">

Revision as of 21:08, 9 June 2014

BoofCV provides an easy to use interface tailored for Processing. Don't know what Processing is? Here is a summary taken from its website:

Processing is a programming language, development environment, and online community. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. Initially created to serve as a software sketchbook and to teach computer programming fundamentals within a visual context, Processing evolved into a development tool for professionals. Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production.

Usage examples can be found on GitHub in the examples directory and browsing through those examples is the best way to learn how to use BoofCV in processing. The interface provided is more object oriented than most of BoofCV and allows for commands to be chained in a sequence. Consider the example below, contours are found by chaining several commands together; threshold, erode, and contour. Operations which don't have a nice easy to use interface can also be used. Just code them up as usual.

Consult the README.TXT for instructions on how to build Processing support using Gradle.

import boofcv.processing.*;
import boofcv.struct.image.*;

PImage imgContour;
PImage imgBlobs;

void setup() {

  PImage input = loadImage("particles01.jpg");

  // Convert the image into a simplified BoofCV data type
  SimpleGray gray = Boof.gray(input,ImageDataType.F32);

  // Threshold the image using its mean value
  double threshold = gray.mean();

  // find blobs and contour of the particles
  ResultsBlob results = gray.threshold(threshold,true).erode8(1).contour();

  // Visualize the results
  imgContour = results.getContours().visualize();
  imgBlobs = results.getLabeledImage().visualize();

  size(input.width, input.height);
}

void draw() {
  background(0);
  if( mousePressed ) {
    image(imgBlobs, 0, 0);
  } else {
    image(imgContour, 0, 0);
  }
}