Как узнать число (например черных) точек в картинке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Как узнать число (например черных) точек в картинке

Сообщение Alex_new_2030 » 13.11.2003 (Чт) 9:38

Как узнать число (например черных) точек в картинке не перебирая все точки. А то долго думаю перебирать придется.
Например есть сосканированная картинка B&W формата А4 (BMP 300dpi)
Нужно подсчитать сколько черных точек во всей картинке.
Буду благодарен любым соображениям.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 13.11.2003 (Чт) 9:48

Никак, имхо. Точное число точек узнать можно лишь перебрав все точки :)

Вопрос, имхо, класса "как прочитать файл, не открывая его".

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.11.2003 (Чт) 11:03

Конкретно для черного цвета можно сделать так:
Инвертируешь картинку. Накладываешь на картинку прямоугольник белого цвета в режиме AND. В итоге все бывшие черные точки станут белыми, все остальные - черными (белый цвет это 00FFFFFFh, черный это 00000000h). Теперь ты просто суммируешь значения всех пикселов и делишь на 2^24 и получаешь количество черных пикселов.
Lasciate ogni speranza, voi ch'entrate.

Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Сообщение Alex_new_2030 » 13.11.2003 (Чт) 11:41

>Теперь ты просто суммируешь значения всех пикселов и делишь на 2^24 и получаешь количество черных пикселов.

Как суммируешь? Значения светов пикселей?

Мне вобщето не столько число пикселей надо сколько процентное соотношение белого к черному в картинке.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.11.2003 (Чт) 15:42

Сразу не прочитал, что тебе надо...
Если у тебя картинка черно-белая, то даже еще проще.
Именно что пробегаешь все пикселы в цикле и увеличиваешь счетчик на один, если пиксел белый. Всего пикселов будет длина * ширина, количество белых ты подсчитал, а количество черных -- разница между ними. Т.е. одношение:
B/W = (width * height - WCount) / WCount
Lasciate ogni speranza, voi ch'entrate.

Alex_new_2030
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 118
Зарегистрирован: 20.02.2003 (Чт) 8:00
Откуда: Kazakhstan

Сообщение Alex_new_2030 » 14.11.2003 (Пт) 7:45

Я сделал проще. Запустил Corel Photo-Paint 11. Загрузил W/B картинку, конвертнул ее в серую 8бит. выбрал из меню гистограмму и получил то что мне надо. т.е число белых и число черных точек. И без перебора.
А если на VB делать с перебором то (12 листов А4 с разрешением 600dpi) наверное бы весь день перебирал. а так 10 мин. заняло.

Спасибо за уделенное мне внимание.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4159
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.11.2003 (Пт) 14:05

Ну так бы и написал, что нужна не программа, а конкретная информация о конкретных нескольких картинках. Можно было еще проще: конверт в GrayScale с размером 1*1. В полученном пикселе и будет усредненный цвет.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 13

    TopList