Есть ли способ использовать imagemagick или другую графическую библиотеку для фильтрации и изображения на основе пикселей в другом изображении - PullRequest
0 голосов
/ 24 октября 2018

Итак, я написал программу для этого, но для ее выполнения требуется вечность.Я заметил, что многие графические библиотеки, кажется, выполняют вещи намного быстрее, чем то, что я кодирую.По сути, я хочу отфильтровать пиксели в первом изображении, используя второе.Если они не совпадают, замените их черным.Я просто хочу видеть стену на изображении.

enter image description here

enter image description here

1 Ответ

0 голосов
/ 24 октября 2018

В ImageMagick вы можете извлечь уникальные (srgb) цвета из вашего изображения2 после ограничения цветов до 255. Затем вы можете зациклить каждый цвет, чтобы он залил этот цвет белым на первом изображении, а все остальные цвета черным,Это создает маску изображения, которое можно умножить на изображение1, чтобы получить ваш результат.Отрегулируйте значение fuzz по желанию.

colors=`convert image2.jpg -fuzz 10% +dither -colors 255 -unique-colors txt: | cut -d\  -f6`
list=""
for color in $colors; do
val="-fill white -opaque '$color'"
list="$list $val"
done
eval 'convert image1.png -fuzz 1% '$list' -fill black +opaque white mask.png'
convert image1.png mask.png -compose multiply -composite result.png


enter image description here

...