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