Удалить фоновое изображение в узле

Я работаю над проектом, где я фиксирую лицо пользователя и помещаю его в существующую модель. Чтобы объединить лицо и изображение модели, я использую библиотеку 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 ответов

Другие вопросы по тегам