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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2011, 09:28   #11
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
возникает ошибка ([Hint] Unit1.pas(40): Value assigned to 'y' never used) ([Hint] Unit1.pas(39): Value assigned to 'x' never used)
А зачем вот это?
Код:
x:=LOGPIXELSX;
y:=LOGPIXELSY;
Цитата:
не показывает рисунок белое окно
Может из-за пробела в имени
Цитата:
Код:
'C:\12._bmp'
Пошу уточнить: Вам действительно нужно
Цитата:
определеить количество черных точек
?
А то судя по коду вам нужна координата Y последней черной точки в первом столбце, в котором она встречается.

Последний раз редактировалось Sibedir; 21.02.2011 в 09:42.
Sibedir вне форума Ответить с цитированием
Старый 21.02.2011, 09:55   #12
Артур22
Новичок
Джуниор
 
Регистрация: 21.02.2011
Сообщений: 8
По умолчанию

Да нужно определить значение y, вот написал кое что лишнее убрал но все равно результата не выводит в численном значении, не понимаю в чем дело
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
myJpg: TJpegImage;
begin
myJpg:=TJpegImage.Create;
myJpg.LoadFromFile('C:\12.jpg');
end;

procedure TForm1.Button2Click(Sender: TObject);
var x,y,z,r: integer;
begin
x:=0;y:=0;
for z:=0 to image1.Width  do
for r:=0 to image1.Height do
if image1.Canvas.Pixels[z,r]=clblack then
begin
x:=z;
y:=r;
Edit1.Text:=FloatToStr(z)+'_znach'+#13;
Edit2.Text:=FloatToStr(r)+'_znach'+#13;
end;
end;
end.
Артур22 вне форума Ответить с цитированием
Старый 21.02.2011, 10:15   #13
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

1
Цитата:
Да нужно определить значение y
Первое вхождение или последнее? Опишите четко. Например:
Цитата:
нужна координата Y последней черной точки в первом столбце, в котором она встречается.
От этого зависит организация цикла
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  x, y: Integer;
  p: TPoint;
begin
  p.X := -1;
  p.Y := -1;
  for x := 0 to Image1.Width do begin
    for y := Image1.Height downto 0 do begin
      if Image1.Canvas.Pixels[x,y]=clblack then
      begin
        p.X := x;
        p.Y := y;
        Break;
      end;
      if p.X <> -1 then Break;
    end;
  end;
  if p.X = -1 then begin
    Edit1.Text := '<не найдено>';
    Edit2.Text := '<не найдено>';
  end
  else begin
    Edit1.Text := IntToStr (p.X);
    Edit2.Text := IntToStr (p.Y);
  end;
end;
2
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
myJpg: TJpegImage;
begin
myJpg:=TJpegImage.Create;
myJpg.LoadFromFile('C:\12.jpg');
end;
Загрузка картинки неведомо куда и как результат отсутствие результата и утечка памяти.
Так было вернее
Цитата:
Код:
Image1.Picture.LoadFromFile('C:\12.bmp');
А то грузите картинку в некий myJpg, который потом нельзя использовать вне процедуры TForm1.Button1Click, а работаете с пустым Image1.

Добавлено -------------------------------------------------------------------------
P.S.: Для загрузкик JPG
Код:
Image1.Picture.LoadFromFile('C:\12.jpg');
добавте в uses "Jpeg".

Последний раз редактировалось Sibedir; 21.02.2011 в 10:29.
Sibedir вне форума Ответить с цитированием
Старый 21.02.2011, 10:24   #14
Артур22
Новичок
Джуниор
 
Регистрация: 21.02.2011
Сообщений: 8
По умолчанию

Все как сказали сделал, картинку показывает но не решает количество пикселей и выводит следующую ошибку (Can only modify an image if it contains a bitmap). Здесь я хочу найти сначало общее количество черных точек (пикселей) в image1. Затем найти количество черных точек (пикселей) по клеткам то есть раздельно
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  myJpg: TJpegImage;
begin
image1.Picture.LoadFromFile('C:\12.jpg');
Image1.Stretch:= True;
end;

procedure TForm1.Button2Click(Sender: TObject);
var x,y: integer;
begin
for x:=0 to image1.Width  do
for y:=0 to image1.Height do
if image1.Canvas.Pixels[x,y]=clblack then
Edit1.Text:=FloatToStr(x)+'_znach'+#13;
Edit2.Text:=FloatToStr(y)+'_znach'+#13;
end;
end.

Последний раз редактировалось Артур22; 21.02.2011 в 10:26.
Артур22 вне форума Ответить с цитированием
Старый 21.02.2011, 10:46   #15
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

АХТУНГ:
Цитата:
Код:
Image1.Stretch:= True;
При растяжении картинка деформируется => координаты и кол-во могут не соответствовать требуемому результату
Цитата:
не решает количество пикселей и выводит следующую ошибку
Цитата:
Здесь я хочу найти сначало общее количество черных точек (пикселей) в image1
Я в ауте. Вы что, еще не определились что вам нужно.
Не знаю, есть ли смысл продолжать разговор.
Цитата:
выводит следующую ошибку (Can only modify an image if it contains a bitmap)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  x, y: Integer;
  p: TPoint;
  bm: TBitmap;
begin
  bm := TBitmap.Create;
  bm.Assign (Image1.Picture.Graphic);
  ...
  for x:=0 to bm.Width  do
    for y:=0 to bm.Height do
      if bm.Canvas.Pixels[x,y]=clblack then
  ...
  bm.Free;
end;
Цитата:
Затем найти количество черных точек (пикселей) по клеткам то есть раздельно
По каким еще клеткам?
Sibedir вне форума Ответить с цитированием
Старый 21.02.2011, 10:55   #16
Артур22
Новичок
Джуниор
 
Регистрация: 21.02.2011
Сообщений: 8
По умолчанию

Это уже следующая программа, а как сделать не растягивая рисунок
Артур22 вне форума Ответить с цитированием
Старый 21.02.2011, 11:01   #17
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Убрать Image1.Stretch:= True. У вас видимо картинка больше Image'а.
Хотя если делать через
Код:
bm.Assign (Image1.Picture.Graphic);
и работать не с канвой Image, а с bm
Код:
if bm.Canvas.Pixels[x,y]=clblack then
то фиг с ним со стрейчем, всеравно работаем непосредственно с картинкой.

Последний раз редактировалось Sibedir; 21.02.2011 в 11:04.
Sibedir вне форума Ответить с цитированием
Старый 21.02.2011, 11:09   #18
Артур22
Новичок
Джуниор
 
Регистрация: 21.02.2011
Сообщений: 8
По умолчанию

Спасибо большое мне пора идти, дома попытаюсь еще что нибуть сделать поковыряюсь в книгах. Если будут вопросы оставлю на форуме
Артур22 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
количество точек в фигуре ignatka Общие вопросы C/C++ 3 03.06.2010 22:43
количество точек в фигуре (си++) @lenk@ Помощь студентам 5 24.05.2010 18:50
количество точек в фигуре @lenk@ Общие вопросы C/C++ 1 22.05.2010 20:53
определить радиус и центр окружности, на кот. лежит наиб.число точек заданного на плоскости мн-ва точек) kcю Помощь студентам 0 17.11.2009 19:50