Получение координат "текстового" ограничивающего прямоугольника изображения в градациях серого с помощью командной строки в linux
Только то, что говорит название.
Строго говоря, то, что я определяю как "текстовую" ограничивающую рамку для изображения в градациях серого, представляет собой набор из 4 координат (x, y, x + ширина, y + высота), которые должны определять прямоугольную область в этом изображении, которая имеет максимальное число небелые пиксели и в то же время наименьшее возможное количество белых пикселов (без изменения максимального количества небелых пикселей). У меня есть текст в кавычках, так как изображения на самом деле не содержат текста, потому что изображения содержат только пиксели с цветами.
Установив ImageMagick в мою Ubuntu и набрав в терминале команду: $convert input.png -trim ouput.png
, Я получил:
Откройте два изображения на новых вкладках в своем веб-браузере, и вы поймете разницу между ними, и вы также поймете, что я определяю как "текстовую" ограничивающую рамку. На самом деле output.png имеет ширину и высоту, которые я ищу. Я не знаю, как получить координаты x и y.
Ответ, предоставленный здесь (1) для страниц PDF, не соответствует моим критериям, так как ограничивающее поле "текст", которое дает мне gs, имеет большие белые поля (и фактически, насколько я могу понять, что gs определяет как ограничивающее поле "текст" для PDF - это нечто отличное от моего определения "текстовой" рамки для рисунка).
2 ответа
Я не понимаю всех слов в вашем описании, и я думаю, что диаграмма поможет, но если вы просто хотите знать, что -trim
будет делать, как предполагает ваш пример кода:
identify -format "%@" image.png
200x100+10+20
Итак, для вашего изображения вы получаете
identify -format "%@" paper.png
406x620+38+68
Это означает, что ваш блок находится на 38 пикселей справа от верхнего левого угла и на 68 пикселей ниже верхнего левого угла, а его ширина составляет 406 пикселей, а высота - 620 пикселей.
И если я нарисую этот прямоугольник красным, я получу:
convert paper.png -stroke red -fill none -draw "rectangle 38,68 444,688" result.png
Альтернативный способ получить тот же результат, но с использованием convert
на месте identify
является:
convert -format %@ paper.png info:
406x620+38+68
Изображения не имеют "текстовой рамки", потому что, очевидно, нет текста.
Изображения в файле PDF могут сами содержать белые пиксели, если они отсканированы из книг, то они почти наверняка будут. Эти пиксели засчитываются в ограничивающую рамку изображения, потому что они белые, не прозрачные и затеняют все, что нарисовано под ними.
Также довольно бессмысленно определять "текстовую рамку" как "область на этом изображении, которая не имеет белых полей и только текста". Если его в изображении, то нет текста, только образцы изображения, которые определяют пиксели. Это изображение текста, а не текст. Чтобы различать области изображения, содержащие текст, и области, содержащие нетекст, вам понадобится программное обеспечение для распознавания текста, больше ничего делать не будет, поскольку только программное обеспечение для распознавания текста способно обнаружить разницу между текстом и нетекстом.