Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var cv = require('opencv');
- var fs = require('fs');
- console.log("Loading images ...");
- cv.readImage('aloeL.jpg',function(errL,imgL){
- cv.readImage('aloeR.jpg',function(errR,imgR){
- imgL.pyrDown();
- imgR.pyrDown();
- var window_size = 3;
- var min_disp = 16;
- var num_disp = 112 - min_disp;
- var stereo = new cv.StereoSGBM(min_disp,num_disp,11,(8*3)*(Math.pow(window_size,2)),(32*3)*(Math.pow(window_size,2)),1,15,50,2);
- console.log("Computing disparity ...");
- var disp = stereo.compute(imgL,imgR);
- var disp8 = new cv.Matrix();
- disp.convertTo(disp8, cv.Constants.CV_8U, 255/(num_disp*16.0))
- disp8.save('test1.jpg');
- console.log("generating 3d point cloud...");
- var h = imgL.size()[0];
- var w = imgL.size()[1];
- var f = 0.8*w;
- var Q = new cv.Matrix.Zeros(4,4);
- Q.set(0,0,1);
- Q.set(0,3,0);
- Q.set(0,3,-0.5*w);
- Q.set(1,1,-1);
- Q.set(1,3,0.5*h);
- Q.set(2,3,-f);
- Q.set(3,2,1);
- var points = cv.calib3d.reprojectImageTo3d(disp,Q);
- var colors = imgL.copy();
- colors.cvtColor('CV_BGR2RGB');
- var FLT_EPSILON = 1.19209e-07;
- var max_z = 1.0e4;
- var count = 0;
- var ply = '';
- for (var i = 0; i < points.size()[0]; i++){
- for (var j = 0; j < points.size()[1]; j++){
- if((Math.abs(points.pixel(i,j)[2] - max_z) < FLT_EPSILON) || (Math.abs(points.pixel(i,j)[2]) > max_z)) {
- continue;
- }
- count = count+1;
- ply = ply + points.pixel(i,j)[0] + " " + points.pixel(i,j)[1] + " " + points.pixel(i,j)[2] + " " + colors.pixel(i,j)[0] + " " + colors.pixel(i,j)[1] + " " + colors.pixel(i,j)[2] + "\n";
- }
- }
- var ply_header = 'ply\n'+
- 'format ascii 1.0\n'+
- 'element vertex '+count+'\n'+
- 'property float x\n'+
- 'property float y\n'+
- 'property float z\n'+
- 'property uchar red\n'+
- 'property uchar green\n'+
- 'property uchar blue\n'+
- 'end_header\n';
- ply = ply_header + ply;
- fs.writeFile("out1.ply",ply,function(err){
- if(err){
- return console.log(err);
- }
- console.log("Saved out1.ply");
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement