Skip to content

Instantly share code, notes, and snippets.

@yoggy
Last active January 1, 2016 21:29
Show Gist options
  • Save yoggy/8203905 to your computer and use it in GitHub Desktop.
Save yoggy/8203905 to your computer and use it in GitHub Desktop.
sample sketch for "OpenCV for Processing" library...
//
// sample sketch for "OpenCV for Processing" library...
//
String image_url = "nike.jpg";
Mat test_img;
void setup() {
size(640, 480);
initOpenCV();
}
void draw() {
Mat img = loadImageMat(image_url);
image(img, 0, 0);
if (frameCount % 30 == 0) {
println("fps=" + frameRate);
}
}
import gab.opencv.*;
import org.opencv.core.*;
import org.opencv.imgproc.*;
OpenCV opencv;
void initOpenCV() {
opencv = new OpenCV(this, width, height);
}
Mat loadImageMat(String url) {
PImage pimage = loadImage(url);
Mat argb_mat = new Mat(pimage.height, pimage.width, CvType.CV_8UC4);
OpenCV.toCv(pimage, argb_mat);
ArrayList<Mat> channels = new ArrayList<Mat>();
Core.split(argb_mat, channels);
ArrayList<Mat> reordered = new ArrayList<Mat>();
reordered.add(channels.get(3)); //B
reordered.add(channels.get(2)); //G
reordered.add(channels.get(1)); //R
Mat bgr_mat = new Mat(argb_mat.rows(), argb_mat.cols(), CvType.CV_8UC3);
Core.merge(reordered, bgr_mat);
return bgr_mat;
}
PImage convertToPImage(Mat src) {
PImage pimage = createImage(src.cols(), src.rows(), ARGB);
if (src.channels() == 1) {
Mat bgra_mat = new Mat(src.rows(), src.cols(), CvType.CV_8UC4);
Imgproc.cvtColor(src, bgra_mat, Imgproc.COLOR_GRAY2BGRA);
opencv.toPImage(bgra_mat, pimage);
}
else if (src.channels() == 3) {
Mat bgra_mat = new Mat(src.rows(), src.cols(), CvType.CV_8UC4);
Imgproc.cvtColor(src, bgra_mat, Imgproc.COLOR_BGR2BGRA);
opencv.toPImage(bgra_mat, pimage);
}
else {
opencv.toPImage(src, pimage);
}
return pimage;
}
void image(Mat img, float x, float y, float w, float h)
{
PImage pimage = convertToPImage(img);
image(pimage, x, y, w, h);
}
void image(Mat img, float x, float y)
{
image(img, x, y, img.cols(), img.rows());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment