Шаблоны должны использоваться экономно.
"Ужасный для отладки" и "трудно для чтения" не большие аргументы против хорошего шаблонного использования с хорошими абстракциями.
Лучшие отрицательные аргументы пошли бы к тому, что STL имеет много "глюков", и использующие шаблоны в целях, которые уже покрывает STL, изобретают велосипед. Шаблоны также увеличивают время ссылки, которое может быть беспокойством о некоторых проектах, и иметь много особенностей в их синтаксисе, который может быть тайным людям.
, Но положительные стороны с повторным использованием общего кода, введите черты, отражение, интеллектуальные указатели, и даже метапрограммы часто перевешивают отрицательные стороны. Вещь, в которой необходимо быть уверены, состоит в том, что шаблоны всегда используются тщательно и экономно . Они не лучшее решение в каждом случае и часто даже второе или третье лучшее решение.
Вам нужны люди с достаточным опытом, пишущий им, что они могут избежать всех ловушек и иметь хороший радар для того, когда шаблоны усложнят вещи больше, чем помощь.
Если ваш фон состоит из изображения, но непоследователен на разных изображениях, это может быть сложно, но вот что я бы сделал:
Край предмета одежды теперь будет выглядеть немного некрасиво, потому что он состоит из пикселей, которые приобретают свой цвет как от фона, так и от предмета одежды. Чтобы справиться с этим, вам нужно проделать немного больше работы:
если вы знаете точную интенсивность цвета фона, и она никогда не изменится, а предметы одежды никогда не будут совпадать с этим цветом, то это простое применение вычитания фона, вот и все это не конкретная интенсивность цвета, считается "включенным" пикселем, представляющим интерес. Затем вы можете использовать маркировку связанных компонентов ( http://en.wikipedia.org/wiki/Connected_Component_Labeling ) для определения отдельных группировок объектов.
Почему бы не добавить обычный первичный ключ, а затем указать, что part_number
и part_revision
как unique_topting
?
Это по сути, это джанговский (джангонический?) способ делать то, что сказал Митч Уит.
По сути, найдите цвет фона и вычтите его, но я думаю, вы это знали. Немного сложно сделать все это автоматически, но это кажется возможным.
Во-первых, взгляните на обнаружение больших двоичных объектов с помощью OpenCV и посмотрите, сделано ли это в основном за вас.
Чтобы сделать это сами:
найти фон : Есть несколько вариантов. Вероятно, проще всего будет гистограмма изображения, и большое количество пикселей с одинаковыми значениями является фоном, а если есть две большие коллекции, фоном будет тот, с большим отверстием посередине. Другой подход состоит в том, чтобы взять полосу по периметру в качестве цвета фона, но это кажется неполноценным, поскольку, например, отражение от вспышки может значительно осветлить более центральные пиксели фона.
удалить фон : сначала нужно установить порог изображения на основе цвета фона, а затем запустить алгоритмы «открытия» или «закрытия» для этого, а затем использовать это как маску для выберите свой предмет одежды. (Смысл открытия / закрытия состоит в том, чтобы не удалять мелкие цветные элементы на одежде, такие как черные пуговицы на белой блузке или, скажем, яркие отражения на черной одежде.)
OpenCV - хороший инструмент для этого.
Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите пока что, задайте еще один вопрос.
или "закрыть" алгоритмы для этого, а затем использовать это как маску для выбора предмета одежды. (Смысл открытия / закрытия в том, чтобы не удалять мелкие цветные элементы на одежде, такие как черные пуговицы на белой блузке или, скажем, яркие отражения на черной одежде.)OpenCV - хороший инструмент для этого.
Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите оставьте еще один вопрос.
или "закрыть" алгоритмы для этого, а затем использовать это как маску для выбора предмета одежды. (Смысл открытия / закрытия в том, чтобы не удалять мелкие цветные элементы на одежде, такие как черные пуговицы на белой блузке или, скажем, яркие отражения на черной одежде.)OpenCV - хороший инструмент для этого.
Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите оставьте еще один вопрос.
)OpenCV - хороший инструмент для этого.
Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите пока что, задайте еще один вопрос.
)OpenCV - хороший инструмент для этого.
Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите пока что, задайте еще один вопрос.