Как изменить фоновое изображение на белый?
У меня есть набор изображений. Изображения имеют простой фон. Я хочу изменить этот фон на белый, используя Marvin Framework и Java.
Поскольку я новичок в Марвине, мне трудно сменить фон. Я также пробовал opencv для Java, но он дает неудовлетворенную ошибку ссылки.
Пример изображения:
1 ответ
Чтобы получить идеальный результат, вам нужно найти способ удаления теней. Но я думаю, что это хорошая отправная точка для вас.
Алгоритм:
- Преобразуйте изображение в двоичную цветовую модель (пиксели имеют значение true или false) с учетом порога серой шкалы.
- Выполните морфологическое расширение для закрытия отверстий на границе обуви.
- Залейте фон цветом rgb(255,0255)
- После заполнения фона новым цветом в двоичном изображении установите те же пиксели в белый цвет в исходном изображении.
выход:
исходный код:
import static marvin.MarvinPluginCollection.*;
public class RemoveBackground {
public RemoveBackground(){
MarvinImage image = MarvinImageIO.loadImage("./res/shoes.jpg");
MarvinImage bin = MarvinColorModelConverter.rgbToBinary(image, 116);
morphologicalDilation(bin.clone(), bin, MarvinMath.getTrueMatrix(5, 5));
MarvinImage mask = MarvinColorModelConverter.binaryToRgb(bin);
boundaryFill(mask.clone(), mask, 5, 5, new Color(255,0,255));
for(int y=0; y<mask.getHeight(); y++){
for(int x=0; x<mask.getWidth(); x++){
if(mask.getIntColor(x, y) == 0xFFFF00FF){
image.setIntColor(x, y, 255,255,255);
}
}
}
MarvinImageIO.saveImage(image, "./res/shoes_out.jpg");
}
public static void main(String[] args) {
new RemoveBackground();
System.exit(0);
}
}