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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2021, 20:19   #11
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Работает и результирующая картинка очень близка к примеру.
Не знаю у меня не работает
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 20:46   #12
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Или вообщем слабый эффект очень:

Код:
procedure GrayscaleBitmap(ABitmap: TBitmap);
var
  X: Integer;
  Y: Integer;
  Gray: Byte;
  Pixels: PRGBArray;
begin
  // iterate bitmap from top to bottom to get access to each row's raw data
  for Y := 0 to ABitmap.Height - 1 do
  begin
    // get pointer to the currently iterated row's raw data
    Pixels := ABitmap.ScanLine[Y];
    // iterate the row's pixels from left to right in the whole bitmap width
    for X := 0 to ABitmap.Width - 1 do
    begin
      // calculate luminance for the current pixel by the mentioned formula
      Gray := Round((0.299 * Pixels[X].rgbRed)   +
                    (0.587 * Pixels[X].rgbGreen) +
                    (0.114 * Pixels[X].rgbBlue));
      // and assign the luminance to each color component of the current pixel
      Pixels[X].rgbRed   := Gray;
      Pixels[X].rgbGreen := Gray;
      Pixels[X].rgbBlue  := Gray;
    end;
  end;
end;

procedure JIRNO(Bmp:Tbitmap);
var
a,b,x,y: integer;
const r=3;
begin
bmp.Canvas.Pen.Color := clBlack;
bmp.Canvas.Brush.Color := clBlack;
bmp.Canvas.Brush.Style := bsSolid;
for x:=0 to bmp.Width-1 do
for y:=0 to bmp.Height-1 do
//if bmp.Canvas.Pixels[x,y]=clGray then
bmp.Canvas.Ellipse(a-r, b-r, a+r, b+r);
end;
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 20:55   #13
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,586
По умолчанию

У вас, наверно, разные Дельфи
noveek не нужно полностью цитировать предыдущее сообщение. Что не работает? Не компилируется, вылетает, зависает, не ту картинку выдаёт?
Партизан на допросе...

Последний раз редактировалось digitalis; 15.12.2021 в 20:58.
digitalis вне форума Ответить с цитированием
Старый 15.12.2021, 20:59   #14
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
У вас, наверно, разные Дельфи
noveek не нужно полностью цитировать предыдущее сообщение. Что не работает? Не компилируется, вылетает, зависает, не ту картинку выдаёт?
Партизан на допросе...
Ну просто ничего не делает как будто
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 21:26   #15
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,596
По умолчанию

Цитата:
Сообщение от noveek Посмотреть сообщение
Ерунда какая то и не работает
Скорее просто руки у кого-то не из того места выросли
Arigato вне форума Ответить с цитированием
Старый 15.12.2021, 21:40   #16
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
У вас, наверно, разные Дельфи
Дело не в версиях. А в умении новичка. Как и любой другой новичок он ошибается и теряется если пример не наглядный. Так как работа идет с файлами что для нас очевидно, а для него нет он решил сделать свой код.

Однако тут целых 2 ошибки:
Цитата:
Сообщение от noveek Посмотреть сообщение
//if bmp.Canvas.Pixels[x,y]=clGray then
bmp.Canvas.Ellipse(a-r, b-r, a+r, b+r);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 15.12.2021, 21:45   #17
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Дело не в версиях. А в умении новичка. Как и любой другой новичок он ошибается и теряется если пример не наглядный. Так как работа идет с файлами что для нас очевидно, а для него нет он решил сделать свой код.

Однако тут целых 2 ошибки:
Что за ошибка ?
UPD:
Ахаха что то я сегодня туплю действительно работает только цвет не факт что чёрный в буквах будет ((
Привести бы буквы и фон к одному цвету как то перед выполнением было бы великолепно

Код:
procedure jirno(Bmp:Tbitmap);
var
x,y: integer;
const r=1;
begin
bmp.Canvas.Pen.Color := clBlack;
bmp.Canvas.Brush.Color := clBlack;
bmp.Canvas.Brush.Style := bsSolid;
for x:=0 to bmp.Width-1 do
for y:=0 to bmp.Height-1 do
if bmp.Canvas.Pixels[x,y]=clBlack then
bmp.Canvas.Ellipse(x-r, y-r, x+r, y+r);
end;

Последний раз редактировалось noveek; 15.12.2021 в 22:07.
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 22:10   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,323
По умолчанию

Рисовать на том же битмапе чревато "разрастанием" эллипсов.
Цитата:
Сообщение от noveek Посмотреть сообщение
Привести бы буквы и фон к одному цвету
Бинаризация изображений: алгоритм Брэдли.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 15.12.2021, 22:13   #19
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Рисовать на том же битмапе чревато "разрастанием" эллипсов.

Бинаризация изображений: алгоритм Брэдли.
Бинаризация есть она очень плохо работает некоторые картинки вообще чистый фон и всё какие бы значения я не ставил:

Код:
procedure Binarize(Bitmap: TBitmap; N: Real);
var
 X, Y: Integer;
 C: TColor;
begin
 for X := 0 to Bitmap.Width - 1 do
   for Y := 0 to Bitmap.Height - 1 do
   begin
     C := Bitmap.Canvas.Pixels[X, Y];
     if GetRValue(C) <= N then
       C := clBlack
     else
       C := clWhite;
     Bitmap.Canvas.Pixels[X, Y] := C;
   end;
   end;

Последний раз редактировалось noveek; 15.12.2021 в 22:16.
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 23:40   #20
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,596
По умолчанию

Если фон одноцветный, то вместо:
Код:
if bmp1.Canvas.Pixels[x,y]=clBlack then
ставим:
Код:
if bmp1.Canvas.Pixels[x,y]<>BackColor then
Где BackColor цвет фона.

И про рисование на исходном битмапе верное замечание сделали. Вам готовый пример дали, а вы пытаетесь добавить отсебятину...
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perl задачи. Перевод буквы в верхний регистр. Как сделать так, чтобы переводил буквы в верхний регистр после точки, восклицательного знака,вопросительного знака? Maxis10 Помощь студентам 0 09.11.2017 01:31
как сделать чтобы из столбца А буквы раскладывались по ячейкам adamant63 Microsoft Office Excel 20 10.04.2016 01:01
Как сделать чтобы при регистрации пароль содержал бы буквы и цифры? erwap PHP 8 08.12.2011 15:54
Как сделать так, чтобы в корректно отображались русские буквы(С) Александр Елис Помощь студентам 0 06.11.2009 19:39
Помогите в строке EXCELя найти цифры и сделать их жирными Wasili4 Microsoft Office Excel 5 17.05.2009 16:21