В dlib.image появилась возможность отслеживать прогресс во время работы фильтров. Для этого используется многопоточность - необходимо создать класс-враппер, наследующий от FilteringThread. Прогресс (от 0 до 1) считывается из свойства progress для SuperImage. В данном примере показано, как использовать эту функциональность для вывода прогресса свертки в консоль:
import std.stdio;
import dlib.image.image;
import dlib.image.io.png;
import dlib.image.filters.convolution;
import dlib.image.fthread;
class ConvolutionThread: FilteringThread
{
float[] kernel;
this(SuperImage img, float[] k)
{
super(img);
kernel = k;
}
override void run()
{
output = image.convolve(kernel);
}
override void onRunning()
{
writef("Convolving %s%%", cast(uint)(image.progress * 100));
write("\r");
stdout.flush();
}
override void onFinished()
{
writeln();
}
}
void main()
{
auto img = loadPNG("test.png");
img = (new ConvolutionThread(img, Kernel.Emboss)).filtered;
img.savePNG("output.png");
}
Я новичок, поэтому, скорее всего, упускаю какой-то момент в использовании библиотеки DLib на языке программирования D.
ОтветитьУдалитьНо вот мне понадобилось написать задачу рисования точки и линии на изображении залитом определенным цветом и потом сохранить полученное изображение в файле. И у меня никак не получается это реализовать(
То есть мне нужно в начале создать пустое изображение размером w и h.
Потом залить его определенным цветом.
Далее нарисовать там точку.
Далее нарисовать прямой отрезок с концами в двух заданных точках.
"
SuperImage image = createSameFormat(720, 1280);
image[px, py] = Color4f(0x07e5f8, 0, 0);
savePNG(image, format("img/frame_%04d.png", i));
"
Подскажите как это можно сделать на примере.
Заранее спасибо.
Если вопрос все еще актуален, то вот:
Удалитьimport dlib.image;
void main()
{
SuperImage img = image(512, 512, 4);
fillColor(img, color4(0x000000ff));
Color4f drawColor = color4(0x07e5f8ff);
img[256, 256] = drawColor;
drawLine(img, drawColor, 280, 280, 511, 511);
savePNG(img, "output.png");
}
Блог переехал на https://gamedev.timurgafarov.ru/, комменты я тут проверяю редко, так что извиняюсь за поздний ответ)