Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2011, 20:24   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Есть ли альтернатива "for to do" для фрагмента кода??

Есть ли более быстрая (существенно быстрая) альтернатива данному (for...to...do) фрагменту кода? А то ну уж очень долго он выполняется.

Код:
procedure TForm1.ScanTools;
var
  axq, ayq: word;
begin
  for ayq:= 0 to Image1.Height do
    begin
      for axq:= 0 to Image1.Width do
        begin
          if Image1.Canvas.Pixels[axq, ayq] = $000000 then
            field[axq, ayq]:= 1;
          if Image1.Canvas.Pixels[axq, ayq] = $000001 then
            field[axq, ayq]:= 2;

          {и так далее...до 40} 

          if Image1.Canvas.Pixels[axq, ayq] = $110000 then
            field[axq, ayq]:= 40;
        end;
    end;
end;
Код выполняет попиксельный анализ изображения (максимально: 3100х1300 пкс.) TImage на наличие в нем определенных цветов и пишет данные о цвете (числа 1..40) в двумерный массив (field[axq, ayq]).
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 06.10.2011, 20:32   #2
_Troy
Я не простой
Пользователь
 
Аватар для _Troy
 
Регистрация: 29.09.2011
Сообщений: 77
По умолчанию

как бы ты не делал отрисовку попиксельно через канву это будет всегда долго. скажи спасибо гди))
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нем сведения
_Troy вне форума Ответить с цитированием
Старый 06.10.2011, 20:35   #3
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от _Troy Посмотреть сообщение
скажи спасибо гди))
Спасибо тебе, GDI !

Ну а как мне анализировать изображение если не так как сделал?
Быстрее нужно, быстрее.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 06.10.2011, 20:37   #4
_Troy
Я не простой
Пользователь
 
Аватар для _Troy
 
Регистрация: 29.09.2011
Сообщений: 77
По умолчанию

DirectX)))
Я не знаю, жди, когда профи ответят.
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нем сведения
_Troy вне форума Ответить с цитированием
Старый 06.10.2011, 20:39   #5
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от _Troy Посмотреть сообщение
DirectX)))
Я не знаю, жди, когда профи ответят.
Может, возможно OpenGL поможет? В нем я немного понимаю, в отличие от DirectХ.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 06.10.2011, 20:47   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

можно попробовать сделать
Image.Picture.graphic.Savetostream;
и потом прямое анализ(чтение) этого потока. Но это потребует ЗНАНИЯ внутреннего формата хранения данных
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.10.2011, 20:49   #7
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
можно попробовать сделать
Image.Picture.graphic.Savetostream;
и потом прямое анализ(чтение) этого потока. Но это потребует ЗНАНИЯ внутреннего формата хранения данных
Можно примерный фрагмент кода посмотреть? Может разберусь как сделать.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 06.10.2011, 20:56   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Вроде, scanline для чтения будет побыстрее обращения к пикселям, но запись по идее всё равно придётся делать через pixels
phomm вне форума Ответить с цитированием
Старый 06.10.2011, 21:13   #9
Asinkrit
Пользователь
 
Аватар для Asinkrit
 
Регистрация: 02.04.2011
Сообщений: 48
По умолчанию

scanline будет быстрее в разы и при чтении и при записи...
Asinkrit вне форума Ответить с цитированием
Старый 06.10.2011, 21:14   #10
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Asinkrit Посмотреть сообщение
scanline будет быстрее в разы и при чтении и при записи...
Объясните, как его приспособить к моему коду?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Microsoft eMbedded Visual C++ или "есть ли альтернатива?" Хрюн моржов Visual C++ 10 08.10.2009 00:50
Альтернатива элементу "file"? sergoss PHP 2 30.09.2009 07:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Помогите с составлением кода для игры "О, счастливчик"! kotzzz Общие вопросы Delphi 33 04.02.2009 05:21
Нет в русском языке "ложит", есть - "кладет". mihali4 Свободное общение 25 01.04.2008 11:19