2013-04-12 2 views
1

У меня есть изображение (взято из камеры моего мобильного телефона или, может быть, нарисовано краской на моем компьютере), в котором у меня есть белый фон и нарисованные линии внутри прямоугольной фигуры. Я рассматриваю только материал внутри прямоугольника, включая его границу.Создайте массив из изображения

Теперь я хочу, чтобы создать массив из этого, что для всех линий массив должен иметь значение 1 и для всех свободного пространства массива должны иметь 0.

Я работаю на Ubuntu и один раз массива был создан, я использую его далее в своей программе на C.

Любые руководства по использованию программного обеспечения для этого? Я слышал о imagemagick, это будет полезно?

Просьба помочь. Спасибо.

+0

В каком формате хранится ваше изображение? Это 'YUV' или' RGB' или 'JPEG'? Если я правильно понимаю, вы пытаетесь создать негатив изображения? Это правильное понимание? – Ganesh

+0

Я не уверен, что отрицательный подразумевал бы, но для всего белого пространства внутри прямоугольной области массив должен иметь 0 и для всех рисованных линий, он должен иметь 1. Я думаю, что если я захвачу его с камеры, будет JPEG. – Kraken

+0

Если ваше изображение имеет только один формат (например, png с фиксированными параметрами), было бы проще использовать единую конкретную библиотеку (в этом случае - libpng), чем использовать imagemagic. –

ответ

1

Я бы за эти шаги:

  • Загрузите изображения (независимо от формата) с библиотекой для обработки изображений. Я предлагаю CImg в качестве простой в использовании библиотеки.

  • Применить порог Фотографии и создать b & w версия. Здесь может быть некоторый шум, и вам, возможно, придется играть с пороговым значением.

  • Обнаружить большой прямоугольник (это несколько сложнее) и урожай его внутри.

Теперь преобразование в массив должно быть простым, просто повторяйте пиксели и проверяйте, является ли он черным или белым.

+0

Спасибо за ответ. На самом деле я до сих пор работал только на языке С. Я не уверен, как использовать библиотеку Clmg. Можете ли вы рассказать мне, какие методы я должен использовать для загрузки, применяя пороговое значение и обнаруживая большой прямоугольник с использованием этой библиотеки. Или связь, которую вы приложили, сможет мне помочь? Еще раз спасибо. – Kraken

+0

Да, это C++, и это может быть не так просто для вас. Я не использовал его в течение нескольких лет, но я помню, что это был один из самых простых в использовании, плюс это только один заголовочный файл. Проверьте [tutorial] (http://cimg.sourceforge.net/reference/group__cimg__tutorial.html) –

+0

Спасибо. Как только я получу массив с 0 и 1 из этого метода, я смогу использовать его в своей программе на C? – Kraken

Смежные вопросы