![](/logo_grey.gif)
Последние записи
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
- Lazarus, проверка существования строки таблице
- BASM и record, обращение к полям записи
- Web PHP Framework Symfony
- Относительный путь для вывода картинки на html странице
- Массовое открытие гиперссылок в браузере
- Скопировать значение строки из таблицы в textarea
- Рамки для страниц отчетов
- Вывод StdOut консоли в TMemo
- Чтение из файла большого размера (нехватка памяти)
![](http://programmersclub.ru/slurm3.jpg)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
![](http://programmersclub.ru/katajpg.jpg)
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
8th
Апр
На bmp изображении есть тела черного цвета самой причудливой формы, надо узнать координаты пикселей, которые входят в тот или иной объект
Posted by obzor under Delphi, Архив
На bmp изображении есть тела черного цвета самой причудливой формы, надо узнать координаты пикселей, которые входят в тот или иной объект изображения.перебераю пиксели пока не встречу первый черный. Потом думал рекурсивную функцию закинуть, но вот не знаю как организовать обработку того что соседе белые или черные(соседей 8). Перебирать все 256 вариантов для рекурсии нет смысла, а вот что-то более рациональное на ум не приходит.Может кто и сталкивался с такого рода задачами… Bmp можно перекрашивать на серый тон…
Вот код(тут еще чуть лишнего кода, но это уже к моей программе отностится)
procedure sosed(a,b:integer);
begin
with otpec[q] do begin
if (GetRValue(bm.Canvas.Pixels[a-1,b])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a-1,b])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a-1,b])<=predelchern) then
begin
bm.Canvas.Pixels[a-1,b]:=clred; //перекрашиваю, чтоб по кругу не гулять
qp:=1+qp; //кол-во пикселей в нашем q-м объекте
sosed(a-1,b);
end;
if (GetRValue(bm.Canvas.Pixels[a-1,b+1])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a-1,b+1])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a-1,b+1])<=predelchern) then
begin
bm.Canvas.Pixels[a-1,b+1]:=clred;
qp:=1+qp;
sosed(a-1,b+1);
end;
if (GetRValue(bm.Canvas.Pixels[a,b+1])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a,b+1])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a,b+1])<=predelchern) then
begin
bm.Canvas.Pixels[a,b+1]:=clred;
qp:=1+qp;
sosed(a,b+1);
end;
if (GetRValue(bm.Canvas.Pixels[a+1,b+1])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a+1,b+1])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a+1,b+1])<=predelchern) then
begin
bm.Canvas.Pixels[a+1,b+1]:=clred;
qp:=1+qp;
sosed(a+1,b+1);
end;
if (GetRValue(bm.Canvas.Pixels[a+1,b])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a+1,b])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a+1,b])<=predelchern) then
begin
bm.Canvas.Pixels[a+1,b]:=clred;
qp:=1+qp;
sosed(a+1,b);
end;
if (GetRValue(bm.Canvas.Pixels[a+1,b-1])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a+1,b-1])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a+1,b-1])<=predelchern) then
begin
bm.Canvas.Pixels[a+1,b-1]:=clred;
qp:=1+qp;
sosed(a+1,b-1);
end;
if (GetRValue(bm.Canvas.Pixels[a,b-1])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a,b-1])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a,b-1])<=predelchern) then
begin
bm.Canvas.Pixels[a,b-1]:=clred;
qp:=1+qp;
sosed(a,b-1);
end;
if (GetRValue(bm.Canvas.Pixels[a-1,b-1])<=predelchern) and
(GetGValue(bm.Canvas.Pixels[a+1,b-1])<=predelchern) and
(GetBValue(bm.Canvas.Pixels[a+1,b-1])<=predelchern) then
begin
bm.Canvas.Pixels[a-1,b-1]:=clred;
qp:=1+qp;
sosed(a-1,b-1);
end;
end;
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
![пеллетные котлы](http://programmersclub.ru/respective.jpg)
пеллетные котлы
![пеллетный котел](http://programmersclub.ru/emtas.jpg)
Пеллетный котел Emtas
![форум программистов](http://programmersclub.ru/banf336х280.gif)
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)