Войти
ПрограммированиеФорумОбщее

Какой есть самый быстрый язык программирования для работы с изображением? (2 стр)

Страницы: 1 2
#15
14:56, 13 мая 2019

Virtex
> Работай с картинкой как с одномерным массивом, а не двумерным.
на гпу для этого z-ordering используется


#16
20:20, 13 мая 2019

если быстро писать алгоритмы обработки изображений - то python + numpy / opencv / PIL / skimage

#17
(Правка: 10:46) 10:45, 14 мая 2019

iperov
... быстро ... python ...
хм... интересное сочетание
...Значит зря мне деньги платили, чтобы я с питона на плюсы портировал...

#18
11:19, 14 мая 2019

oxotnik
> Значит зря мне деньги платили, чтобы я с питона на плюсы портировал...

питон есть скрипт же - opencv is time critical

#19
(Правка: 11:32) 11:32, 14 мая 2019

innuendo
Да мы тот же openCV  и юзали для обработки, переписывание все таки давало буст (и нормальный такой). 

#20
(Правка: 11:33) 11:33, 14 мая 2019

igalinov1
> но делфи сильно тормозит

Ты, очевидно, работаешь через Pixels[x,y] канваса, а этот способ не подходит для массовой и быстрой работы с пикселями.
Если хочется быстро, то нужно обходить картинку через указатели на сканлайны.
Например так:

function Process(image: TBitmap): Boolean;
var
  i, j: Integer;
  r1, g1, b1: Integer;
  rr, gg, bb: Integer;
  p1, p2: ^RGBRec;
begin

  try
    for i := 0 to image.Height - 1 do
    begin
      p1 := image.ScanLine[i];
      for j := 0 to image.Width - 1 do
      begin
        // extract
        r1 := p1^.r;
        g1 := p1^.g;
        b1 := p1^.b;
        // process
        ...

        // normalize
        ...

        // store
        p1^.r := r1;
        p1^.g := g1;
        p1^.b := b1;

        Inc(p1);
      end;
    end;
    Result := True;
  except
    ShowError('Ошибка применения алгоритма!');
    Result := False;
  end;
end;

#21
(Правка: 23:53) 23:53, 14 мая 2019

=A=L=X=
У автора же:

много картинок (тысячи, может миллионы) и каждую обходить по пикселам

Вопрос же из разряда: "какой инкремент самый быстрый? ++i? у меня их миллионы"
#22
(Правка: 8:14) 8:13, 15 мая 2019

MrShoor
> У автора же:
> много картинок

у него еще:

Делфи даже на ассемлере не может 200 маленьких изображений обработать.

Не знаю как можно написать на ассемблере обработку 200 маленьких изображений так чтобы тормозило.
Но на дельфи наивно работая через свойство Canvas.Pixels[ x, y ] - запросто. Там реально дико тормозит, т.к. обращение к каждому пикселю превращается в вызов функции где происходит умножение.
Переписав когда на то как я написал выше получаешь буст в 100 и более раз.

#23
8:17, 15 мая 2019
вас развели как лохов
#24
8:29, 15 мая 2019

Аааа, понял откуда у него ассемблер в речи взялся: https://gamedev.ru/art/forum/?id=242269
В общем это, оказывается, давнийшний хелпвампир, работает он действительно через Pixels[x,y], а про ассемблер просто ляпнул не понимая что цитирует.

#25
(Правка: 10:35) 10:33, 15 мая 2019

igalinov1
> Делфи даже на ассемлере не может 200 маленьких изображений обработать.
В Дельфи даже ассемблер тормозит? Вот это открытие!

/A\
> CUDA для нвидиа или OpenCL для остальных.
+1

=A=L=X=
> Ты, очевидно, работаешь через Pixels[x,y] канваса
Аааа, так это руки из жопы тормозят, а не Дельфи!
Тогда всё в порядке, мир на месте.

#26
11:41, 15 мая 2019

=A=L=X=
> это, оказывается, давнийшний хелпвампир
Древнее зло пробудилось

Страницы: 1 2
ПрограммированиеФорумОбщее