59 lines
1.4 KiB
Plaintext
59 lines
1.4 KiB
Plaintext
import gab.opencv.*;
|
|
import org.opencv.core.Mat;
|
|
import org.opencv.calib3d.StereoBM;
|
|
import org.opencv.core.CvType;
|
|
import org.opencv.calib3d.StereoSGBM;
|
|
|
|
OpenCV ocvL, ocvR;
|
|
PImage imgL, imgR, depth1, depth2;
|
|
|
|
void setup() {
|
|
|
|
imgL = loadImage("scene_l.jpg");
|
|
imgR = loadImage("scene_r.jpg");
|
|
ocvL = new OpenCV(this, imgL);
|
|
|
|
ocvR = new OpenCV(this, imgR);
|
|
|
|
size(ocvL.width * 2, ocvL.height*2);
|
|
|
|
ocvL.gray();
|
|
ocvR.gray();
|
|
Mat left = ocvL.getGray();
|
|
Mat right = ocvR.getGray();
|
|
|
|
Mat disparity = OpenCV.imitate(left);
|
|
|
|
StereoSGBM stereo = new StereoSGBM(0, 32, 3, 128, 256, 20, 16, 1, 100, 20, true);
|
|
stereo.compute(left, right, disparity );
|
|
|
|
Mat depthMat = OpenCV.imitate(left);
|
|
disparity.convertTo(depthMat, depthMat.type());
|
|
|
|
depth1 = createImage(depthMat.width(), depthMat.height(), RGB);
|
|
ocvL.toPImage(depthMat, depth1);
|
|
|
|
StereoBM stereo2 = new StereoBM();
|
|
stereo2.compute(left, right, disparity );
|
|
disparity.convertTo(depthMat, depthMat.type());
|
|
|
|
|
|
depth2 = createImage(depthMat.width(), depthMat.height(), RGB);
|
|
ocvL.toPImage(depthMat, depth2);
|
|
}
|
|
|
|
void draw() {
|
|
image(imgL, 0, 0);
|
|
image(imgR, imgL.width, 0);
|
|
|
|
image(depth1, 0, imgL.height);
|
|
image(depth2, imgL.width, imgL.height);
|
|
|
|
fill(255, 0, 0);
|
|
text("left", 10, 20);
|
|
text("right", 10 + imgL.width, 20);
|
|
text("stereo SGBM", 10, imgL.height + 20);
|
|
text("stereo BM", 10 + imgL.width, imgL.height+ 20);
|
|
}
|
|
|