inspirit / jsfeat

JavaScript Computer Vision library.
MIT License
2.74k stars 374 forks source link

Need an example how to use resample with RGB images #68

Open vfateev opened 7 years ago

vfateev commented 7 years ago

The description says the method works with single and multi channel. So what I'm trying to do is smth like this: // Prepare input data var columns = imageData.width; var rows = imageData.height; var data_type = jsfeat.U8_t | jsfeat.C3_t; // RGB = 3 channels var src = new jsfeat.matrix_t(columns, rows, data_type);

    var size = imageData.data.length;
    for (var i = 0, j = 0 ; i < size ; i +=4, j +=3) {
        src.data[j]     = imageData.data[i];
        src.data[j + 1] = imageData.data[i + 1];
        src.data[j + 2] = imageData.data[i + 2];
    }

    // Prepare output data
    var scale = 0.5;
    var nw = Math.floor(width * scale);
    var nh = Math.floor(height * scale);
    var dst = new jsfeat.matrix_t(nw, nh, data_type);

    // Resample
    jsfeat.imgproc.resample(src, dst, nw, nh);

    // Prepare output imageData
    var dstImageData = createEmptyImageData(nw, nh);
    size = dstImageData.data.length;

    for (i = 0, j = 0 ; i < size ; i += 4, j += 3) {
        dstImageData.data[i] = dst.data[j];
        dstImageData.data[i + 1] = dst.data[j + 1];
        dstImageData.data[i + 2] = dst.data[j + 2];
        dstImageData.data[i + 3] = 255;
    }

    // Draw dstImageData into the canvas and check

The result I got is pretty weird: https://www.dropbox.com/s/xfjucm99kjd6wpx/resample_result.jpg?dl=0 Can't figure out what is wrong, could you please help?