删除节点

时间:2017-09-09 10:37:34

标签: node.js image opencv gm

我正在开展这个项目,我正在抓住用户面对并将其放在现有模型上。 要结合面部和模型图像我正在使用节点的gm库;和面部检测我使用opencv。我能够检测到面部并将其放在模型上。 但问题是我的模型具有透明背景但用户不会面对(因为脸部是从相机拍摄的)。

我想删除脸部的背景并使其透明。有没有办法让这成为可能?

以下是我的集成代码:

gm()
            .in('-page', '+0+0')
            .in("public/" + modelImagePath) 
            .in('-page', '+130+45')  
            .in(newDir + '/crp.png')
            .mosaic()
            .write(resultantImage, function (err) {
               if (err) console.log(err);

            });

这里crp.png是面部图像,modelimagepath是模型图像 完整的opencv + gm代码:

cv.readImage(newDir + "/zxcv.png", function(err, im){
      im.detectObject(cv.FACE_CASCADE, {}, function(err, faces){
        console.log("into detec:" + faces.length + "," + faces[0]);

        if ( faces.length > 0)
        {
            var x = faces[0];
            gm(newDir + "/zxcv.png")
            .crop(x.width,x.height,x.x,x.y)
            .write(newDir + '/crp.png', function (err) {
                if (err) console.log(err);
             });

            var modelImagePath = getModelBasedOnSize(hips, skin, waist, weight, 1);
            var modelSize = modelImagePath.split("-")[1].split(".")[0];
            resultantImage = newDir + "/result-" + modelSize + ".png";
            gm()
            .in('-page', '+0+0')
            .in("public/" + modelImagePath) 
            .in('-page', '+130+45') // frok -> 95 87 //+105+60 // 
            .in(newDir + '/crp.png')
            .mosaic()
            .write(resultantImage, function (err) {
               if (err) console.log(err);
               res.end(resultantImage.replace('public/', ''));
               //res.end(resultImage.replace('public/', ''));
            });
        }
        else{
            console.log("into else - pic not present");
            var modelImagePath = getModelBasedOnSize(hips, skin, waist, weight, 0);
            res.end(modelImagePath.replace('public/', ''));
        }
      }); //opencv detect face
    })

0 个答案:

没有答案