0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 5
1

Преобразовать серое полутоновое изображение в черно-белое

17.06.2019, 17:11. Показов 1176. Ответов 1

Author24 — интернет-сервис помощи студентам
Нужно преобразовать серое полутоновое изображение в черно-белое .Пытался взять за основу программу из этой темы : Преобразование цветного изображения в черно-белое , но все время выпадала ошибка Нельзя преобразовать тип System.Drawing.Color к integer ,ругалась она на эту строчку - cp:=GetPixel(i,j); , Преподаватель сказал ,что нужно вставить вот это ,


Pascal
1
2
3
4
5
6
7
8
function RGB(r,g,b: byte): Color; 
        Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие (r,g и b - в диапазоне от 0 до 255)
function RedColor(r: byte): clRed; 
        Возвращает красный цвет с интенсивностью r (r - в диапазоне от 0 до 255)  
function GreenColor(g: byte): clGreen; 
        Возвращает зеленый цвет с интенсивностью g (g - в диапазоне от 0 до 255)  
function BlueColor(b: byte): clBlue; 
        Возвращает синий цвет с интенсивностью b (b - в диапазоне от 0 до 255)
В чем может быть ошибка того задания ,или для серого оно не подойдет ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2019, 17:11
Ответы с готовыми решениями:

Как преобразовать изображение в черно белое?
Как преобразовать изображение из цветного в черно белое?

Преобразовать цветное изображение в черно-белое
Интересует не вычисление порога, и не алгоритм. В c# я загружаю изображение в bitmap, лочу,...

Как преобразовать изображение BMP в черно-белое на C
Столкнулся с проблемой написания программы по изменению цвета. В интернете множество аналогичных...

Как преобразовать изображение BMP в черно-белое и не только?
Здравствуйте! В общем стоит задача сделать консольный фото редактор, который выполнял бы ряд...

1
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 5
21.06.2019, 01:20  [ТС] 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
uses
  graphabc;
const
  n=145; {ширина}
  m=205;  {высота}
 var
 q:Picture;
 i,j:longint;
 w,h:integer;
 r,g,b:byte;
 
begin
  q:=Picture.Create('effect-black-white.JPG'); {создаем обьект класса picture}
  q.Load('effect-black-white.JPG'); {- загружаем обьект}
  q.Draw(0,0); {- вывод на экран изображения }
  Line(n,0,n,2*m-1);
  Line(0,m,2*n-1,m);  
  w:=2*n;
  h:=2*m;
  SetWindowWidth(w);
       { Устанавливает ширину клиентской части графического окна в пикселах}  
  SetWindowHeight(h); 
       { Устанавливает высоту клиентской части графического окна в пикселах  }
  for i:=0 to n-1 do  {от x равного 1 до конца ширины изображения }
  for j:=0 to m-1 do  {от y равного 1 до конца высоты изображения }    
 
 begin
  SetPixel(i, j, RGB(r,g,b)); 
 
  if r<133 then r:=0 
  else r:=255;
 
  if g<133 then g:=0 
  else g:=255 ;
 
  if b<133 then b:=0
  else b:=255 ;
 end;
вот что получилось ,но изображение всё равно не преобразовывает ,а просто закрашивает всё черным

Добавлено через 1 час 28 минут
программа тормозит на 27 действии и все время повторяет его с 30 действием (если проверять по шагам )

Добавлено через 2 часа 19 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
uses
 graphabc;
const
  n=145; {ширина}
  m=205;  {высота}
 var
 q:Picture;
 i,j:longint;
 w,h:integer;
 r,g,b:byte;
 
 
 
begin
  
  q:=Picture.Create('effect-black-white.JPG'); {создаем обьект класса picture}
  q.Load('effect-black-white.JPG'); {- загружаем обьект}
  q.Draw(0,0); {- вывод на экран изображения }
  Line(n,0,n,2*m-1);
  Line(0,m,2*n-1,m);  
  w:=2*n;
  h:=2*m;
  SetWindowWidth(w);   { Устанавливает ширину клиентской части графического окна в пикселах}        
  SetWindowHeight(h);  { Устанавливает высоту клиентской части графического окна в пикселах}
 
   for j:=0 to m do  {от y равного 0 до конца высоты изображения }
   for i:=0 to n do  {от x равного 0 до конца ширины изображения }       
 
  begin  
   SetPixel(i, j, RGB(r,g,b)); 
   if r>133 then r:=255
    else r:=0;          
   if g>133 then g:=255 
    else g:=0 ;         
   if b>133 then b:=255
    else b:=0 ; 
  end; 
end.
это конечное что у меня получается ,но я все равно не могу понять где ошибка ,почему-то SetPixel начинает закрашивать пиксел черным раньше ,чем проверит его тон ,может кто-то подсказать где у меня ошибка?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2019, 01:20
Помогаю со студенческими работами здесь

Черно-белое изображение
Здравствуйте, возникла проблема создание сегментированного изображения.... Нашёл код для...

Opencv черно-белое изображение
Считываю изображение - перевожу его в черное-белое, вывожу в label, а оно странно отображается,...

Перевести изображение в чёрно-белое
Имеется QImage изображение которое необходимо сделать чёрно-белым. С помощью формул получалось...

Черно-белое изображение на цветном ТВ
Вообщем дело в том, что есть телевизор плазма какая то, сам цветной , но все устройства которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru