2016-12-18 2 views
-1

Существует фотография, на которой я хочу, чтобы отрезать 6 кадров автоматически:Как определить угловые точки

enter image description here

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

enter image description here


Или, может быть, кто-нибудь знает программу для автоматической резки спрайтов?

+0

** Я хочу получить его ** https://i.stack.imgur.com/J1Bh1.png – Smeshariki

+0

** Я хочу получить его автоматически ** https://i.stack.imgur.com/ J1Bh1.png – Smeshariki

+0

Вы решили свои проблемы? – TaW

ответ

2

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

Его лучше создать стандартный прямоугольник и использовать ключевую маску для удаления цвета фона.

Его лучший дизайнер говорит вам о точках.

Кстати, если вы хотите узнать, автоматически:

https://www.codeproject.com/Articles/826377/Rapid-Object-Detection-in-Csharp

https://kishordgupta.wordpress.com/2010/12/24/detect-object-from-image-based-on-object-color-by-c/

0

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

Лучший способ imo является полуавтоматическим.

Добавить несколько (6) NumericUpDowns (или TrackBars) для управления

  • StartX и StartY
  • прямоугольник ширину и высоту и
  • Ширина и высота зазоров

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

Когда вы счастливы, вы вырезали изображения.

Главное преимущество заключается в том, что все прямоугольники будут иметь тот же размер, что и обычно для спрайтов. И вы можете контролировать поля ..

Вот пример на работе unsing TrackBar ползунков:

enter image description here

BTW: Ваш «spritemap» не очень хорошо сделаны, как спрайты не будет иметь те же размеры ; поэтому их придется вырезать индивидуально. Очевидно, против обычного пути spritemaps.

+0

Проблема не является трудной или медленной или ненадежной, если спрайты отделены друг от друга. Вам просто нужен алгоритм * Flood fill *.Однако ему нужна большая работа. –

+0

??? a) Floodfill кажется совершенно не связанным и b) это не очень много работы. wikipedia имеет несколько хороших простых алгоритмов, и можно даже прибегнуть к некоторым старым вызовам gdi. Но: Я никак не могу видеть связанные. Также: спрайты могут состоять из несвязанных частей, связанных с отказом полностью автоматических решений. – TaW

+0

В анимации нет несвязанных частей, что означает, что ваша модель ** всегда ** непрерывна. Если нет, то вы не можете иметь динамическую силу, симуляция движения или ваш спрайт поврежден. Алгоритм заполнения залива можно использовать для нахождения min max в обеих осях x-y. –

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