Я хочу закодировать приложение для создания карты изображений .
Он сканирует изображение и объявляет смежные области одного и того же цвета частями одной и той же области карты изображения.
Я могу себе представить, что черный используется для краев, для обозначения областей, а темно-синий используется для текста, поэтому его следует игнорировать. Представьте себе карту США, где штаты обведены черным цветом, названия штатов выделены темно-синим цветом, а штаты окрашены в красный цвет (ни черный, ни темно-синий).
Знаете ли вы какую-нибудь библиотеку, которая помогла бы в этом? Я предпочитаю C/C++, или Python, или Delphi, но соглашусь на любом языке, просто чтобы посмотреть, как это делается.
Возможно, если мы вернемся к вашему предыдущему вопросу : у вас есть цветной план этажа, который вы преобразовали в карту-изображение, и теперь вы хотите найти, в какой комнате находится курсор. Вместо того, чтобы возиться с промежуточной картой-изображением, почему бы и нет? просто использовать javascript для определения цвета пикселя под курсором в любое время? Затем вы должны найти это значение rgb в списке цветов комнаты.
Так как вы выбираете цвета плана этажа, вы можете гарантировать разные цвета для каждой комнаты. При необходимости комнаты одного и того же видимого цвета могут иметь небольшие различия в rgb, которые едва заметны. Если пиксель под курсором — это черный текст, вы можете попробовать сместить его на несколько пикселей в любую сторону.
Если вы хотите использовать в своей карте изображения только простые прямоугольники, а не сложные полигоны, возможный путь исследования — использовать ImageMagick для определения размера и местоположения цветной области. Например, используя изображение в предыдущем вопросе и выбрав цвет левой комнаты как шестнадцатеричное значение rgb e97978
, вы можете запустить
convert https://i.stack.imgur.com/fp5Ff.jpg -fill white +opaque '#e97978' /tmp/out.png
чтобы раскрасить только эту комнату на белом фоне:
Если вы добавите -trim
опцию в конец, вы получите обрезанное изображение:
который является ограничивающим прямоугольником комнаты, но если вы используете его identify
на полученном изображении, у вас будет не только размер этого прямоугольника (196x179), но и его левое верхнее положение (+111+53) в исходном увеличенном изображении:
$ identify /tmp/out.png
/tmp/out.png PNG 196x179 900x291+111+53 ...
Таким образом, если вы можете раскрасить каждую комнату по-разному и, желательно, не использовать jpg с потерями, который искажает цвета, вы можете быть ближе к автоматизированному алгоритму.
Мог говорит восстановить Монику
Мог говорит восстановить Монику
Мяу
Мог говорит восстановить Монику
context.getImageData(X,Y, ...)
второе изображение?Мяу