Логотип StingRay

Социальные сети
FacebookInstagramRSSTwitterYouTubeВ контактеОдноклассники
FacebookInstagramRSSTwitterYouTubeВ контактеОдноклассники
Силуэт человека

Курсовая работа по обработке изображений

Настоящие методические указания предназначены, прежде всего, для студентов моей специальности 230101 «Вычислительные машины, комплексы, системы и сети», которые хотели бы успешно выполнить курсовую работу по дисциплине с громким названием «Обработка изображений, распознавание образов и мультимедиа». Также они могут быть полезны для студентов и других специальностей и вообще всех интересующихся обработкой изображений и распознаванием текста.

Работа с изображением и его отображение Компонент TImage

Желательно иметь несколько компонентов, хранящих изображения. Это нужно, во-первых, для более быстрой работы (если работать с изображением, которое невидно пользователю, то система не затрачивает времени на постоянную прорисовку каждого изменения; гораздо быстрее один раз предъявить конечный результат), а во-вторых, для возможности отката/повтора действия. Кроме того, это может пригодиться для каких-либо алгоритмов, формирующих результирующее изображение отдельно от исходного и на его основе. Здесь используются визуальные компоненты-контейнеры класса TImage, а также их невизуальные «составляющие» вроде TBitmap; при этом копирование (именно копирование, а не ссылка) содержимого осуществляется так:

var  Bitmap: TBitmap;
  Image: TImage;

begin
  Bitmap := TBitmap.Create;
  Bitmap.Assign (Image.Picture); // из Image – в Bitmap
  
  Image.Picture.Assign (Bitmap); // из Bitmap – в Image
  Bitmap.Free;
end;

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

var
  Bitmap: TBitmap;
  BitmapArea: TRect;
  Image: TImage;

begin
  Bitmap := TBitmap.Create;
  with BitmapArea do
    begin
      Left := 0;
      Top := 0;
      Right := Image.Width – 1;
      Bottom := Image.Height – 1;
    end;
  with Bitmap do
    begin
      Height := Image.Height;
      Width := Image.Width;
      Canvas.CopyMode := CMSrcCopy;
      Canvas.CopyRect (BitmapArea, Image.Canvas, BitmapArea);
    end;
  Image.Picture.Assign (Bitmap);
  Bitmap.Free;
end;

Использование всяких линеек процесса (классы TProgressBar или TGauge) – это, конечно, красиво, но может существенно замедлить работу алгоритмов. А вот использовать метод Application.ProcessMessages в долгих цикличных процедурах было бы не лишним, так как это создаёт «эффект независшего приложения» (выполняется его периодическое обновление, а также обработка системных событий).

Добавьте свой комментарий или войдите, чтобы подписаться/отписаться.
OpenId
Предпросмотр
Улыбка Подмигивание Дразнит Оскал Смех Огорчение Сильное огорчение Шок Сумасшествие Равнодушие Молчание Крутизна Злость Бешенство Смущение Сожаление Влюблённость Ангел Демон Задумчивость Рука-лицо Не могу смотреть Жирный Курсив Подчёркивание Зачёркивание Размер шрифта Гиперссылка Цитата
Загрузка…