извлечение цвета пикселей imagemagick (принудительное использование RGB) - PullRequest
0 голосов
/ 28 мая 2020

Я использую imagemagick для извлечения цвета пикселя с некоторыми координатами x,y в jpeg-изображении.

В большинстве случаев выводится srgb(R,G,B), но в некоторых случаях возвращается grey##.

Поскольку для расчетов мне понадобятся простые числа RGB, grey## не является подходящим значением.

Возможно ли всегда получать значения RGB из imagemagick?

Команда:

magick image.jpg -format "%[pixel:p{110,246}]" info:-

1 Ответ

1 голос
/ 28 мая 2020

Что вы хотите сделать, так это вычислить каждый цветовой канал отдельно в ImageMagick fx: computation.

magick image.jpg[1x1+110+245] -format "%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)]" info:


Это даст, например:

enter image description here

magick lena.jpg[1x1+110+245] -format "%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)]" info:


208,90,88

Если вы хотите включить rgb (), сделайте

magick image.jpg[1x1+110+245] -format "rgb(%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)])" info:


magick lena.jpg[1x1+110+245] -format "rgb(%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)])" info:


rgb (208,90,88)

ДОПОЛНЕНИЕ:

Если вы хотите вернуть несколько пикселей, вы можете сделать следующее:

magick lena.jpg -format "rgb(%[fx:round(255*u.p{10,10}.r)],%[fx:round(255*u.p{10,10}.g)],%[fx:round(255*u.p{10,10}.b)]) rgb(%[fx:round(255*u.p{100,100}.r)],%[fx:round(255*u.p{100,100}.g)],%[fx:round(255*u.p{100,100}.b)])\n" info:


rgb (226,130,106) rgb (131,46,85)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...