1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Triangle

Клонировать/Скачать
README.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.06.2025 18:27 7f3678a

Логотип треугольника

Сборка Отчет Go Report Card Справочник Go Лицензия Релиз Homebrew

▲ Triangle — это инструмент для генерации треугольной сетки изображения с использованием метода Делоне. Он принимает исходное изображение и преобразует его в абстрактное изображение, составленное из плиток треугольников.

Пример изображения### Процесс

  • Сначала изображение размывается для сглаживания острых краев пикселей. Чем больше размыто изображение, тем более размытым будет сгенерированный результат.
  • Затем полученное изображение преобразуется в монохромный режим.
  • Затем применяется фильтр Собеля к монохромному изображению для получения краев изображения. Опциональное значение порога применяется для фильтрации значимых пикселей полученного изображения.
  • Применяется оператор фильтрации свертки к данным изображения для корректировки его окончательного аспекта перед запуском процесса треугольной сетки Делоне.
  • Наконец, алгоритм Делоне применяется к пикселям, полученными из предыдущего шага.### Функции
  • Может обрабатывать рекурсивно целые директории и поддиректории одновременно.
  • Поддерживает различные типы изображений.
  • Не требуется указывать тип файла, CLI-инструмент может автоматически распознать тип входного и выходного файла.
  • Может принимать URL изображения в качестве параметра для флага -in.
  • Возможность сохранения сгенерированного изображения в формате SVG.
  • Сгенерированный SVG-файл можно получить непосредственно из веб-браузера.
  • Чистый и интуитивно понятный API. API не только принимает файлы изображений, но также может работать с данными изображений. Это означает, что метод Draw может быть вызван даже на потоках данных. Проверьте это демо для справки.
  • Поддержка имен каналов (возможность передачи входных и выходных изображений через каналы).

TODO

  • Отдельное и нативное графическое приложение

Перейдите по этой ссылке, чтобы лучше понять поддерживаемые функции.

Установка и использование

$ go install github.com/esimov/triangle/v2/cmd/triangle@v2.0.0 

Вы также можете скачать двоичный файл из папки релизов.

Установка на MacOS (Brew)

Библиотека также может быть установлена с помощью Homebrew.```bash $ brew install triangle


## Использование API
```go
proc := &triangle.Processor{
	MaxPoints:  2500,
	BlurRadius: 2,
	PointRate:  0.75,
	BlurFactor: 1,
	EdgeFactor: 6,
}

img := &triangle.Image{
	Processor: *proc,
}

input, err := os.Open("input.jpg")
if err != nil {
	log.Fatalf("ошибка при открытии исходного файла: %v", err)
}

// декодирование изображения
src, err := img.DecodeImage(input)
if err != nil {
	log.Fatalf("ошибка при декодировании изображения: %v", err)
}
res, _, _, err := img.Draw(src, *proc, func() {})
if err != nil {
	log.Fatalf("ошибка при генерации треугольников: %v", err)
}

output, err := os.Create("output.png")
if err != nil {
	log.Fatalf("ошибка при открытии целевого файла: %v", err)
}

// кодирование изображения
png.Encode(output, res)

Поддерживаемые команды

$ triangle --help

Следующие флаги поддерживаются:

Флаг Значение по умолчанию Описание
in n/a Исходное изображение
out n/a Целевое изображение
bl 2 Радиус размытия
nf 0 Фактор шума
bf 1 Фактор размытия
ef 6 Фактор краев
pr 0.075 Скорость точек
pth 10 Порог точек
pts 2500 Максимальное количество точек
so 10 Порог фильтра Sobel
sl false Использование сплошного цвета линии (да/нет)
wf 0 Режим wireframe (0: без линии, 1: с линией, 2: только линия)
st 1 Ширина линии
gr false Вывод в монохромном режиме
web false Открытие SVG файла в веб-браузере
bg ' ' Цвет фона (указан как шестнадцатеричное значение)
cw системные спецификации Количество файлов для обработки параллельно

Обработка нескольких изображений из папки параллельно

CLI-инструмент также позволяет обрабатывать несколько изображений из папки параллельно. Вам нужно только указать исходную и целевую папки с помощью флагов -in и -out.

$ triangle -in <input_folder> -out <output_folder>

Вы можете также предоставить URL-адрес изображения для флага -in.

$ triangle -in <image_url> -out <output_folder>

Имена каналов

Командная строка принимает также имена каналов, что означает, что вы можете использовать stdin и stdout без необходимости указания значения для флагов -in и -out напрямую, так как по умолчанию они равны -. По этой причине можно использовать curl, например, для загрузки изображения из интернета и запуска процесса триангуляции над ним непосредственно, без необходимости загрузки изображения сначала и последующего вызова ▲ Triangle.

Вот несколько примеров использования имен каналов:

$ curl -s <image_url> | triangle > out.jpg
$ cat input/source.jpg | triangle > out.jpg
$ triangle -in input/source.jpg > out.jpg
$ cat input/source.jpg | triangle -out out.jpg
$ triangle -out out.jpg < input/source.jpg

Цвет фона

Вы можете указать цвет фона в случае прозрачного фона изображения (.png) с помощью флага -bg. Этот флаг принимает шестнадцатеричную строку. Например, установка флага на -bg=#ffffff00 сделает канал альфа результата прозрачным.#### Вывод в виде изображения или SVG По умолчанию вывод сохраняется в виде изображения, но вы можете экспортировать полученные вершины даже в файл SVG. Командная строка может распознавать тип вывода напрямую из расширения файла. Это удобное дополнение для тех, кто хочет генерировать большие изображения без потери качества.

$ triangle -in samples/input.jpg -out output.svg

Использование с флагом -web позволяет получить доступ к сгенерированному файлу SVG напрямую в веб-браузере.

$ triangle -in samples/input.jpg -out output.svg -web=true

Поддерживаемые типы выходных файлов

Поддерживаются следующие типы выходных файлов: .jpg, .jpeg, .png, .bmp, .svg.

Настройки

Установка более низкого порога точек, результативное изображение будет больше напоминать кубическую живопись. Вы можете добавить фактор шума, генерируя более художественное, зернистое изображение.

Вот несколько примеров, с которыми вы можете экспериментировать:

$ triangle -in samples/input.jpg -out output.png -wf=0 -pts=3500 -st=2 -bl=2
$ triangle -in samples/input.jpg -out output.png -wf=2 -pts=5500 -st=1 -bl=10
```## Примеры
<a href="https://github.com/esimov/triangle/blob/master/output/sample_3.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_3.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_4.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_4.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_5.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_5.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_6.png"><img src="https://github/esimov/triangle/blob/master/output/sample_6.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_8.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_8.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_9.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_9.png" width=410/></a>
![Triangle1](https://github.com/esimov/triangle/blob/master/output/sample_0.png)
![Triangle2](https://github.com/esimov/triangle/blob/master/output/sample_1.png)
![Triangle3](https://github.com/esimov/triangle/blob/master/output/sample_11.png)

## Лицензия
Copyright © 2018 Endre SimoЭтот проект находится под лицензией MIT. Полный текст лицензии доступен в файле [LICENSE](https://github.com/esimov/triangle/blob/master/LICENSE).

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Triangle.git
git@api.gitlife.ru:oschina-mirror/mirrors-Triangle.git
oschina-mirror
mirrors-Triangle
mirrors-Triangle
master