Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8

Обработка .bmp изображений

16.04.2013, 16:15. Показов 5240. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с програмкой до этого делал в маткаде) а сейчас надо в билдере по тихоньку вникаю не очень получается. Нужно по битово считать чёрно белый bmp файл с 265 градациями интенсивности пикселя от белого до чёрного показать на экране весь этот массив, а затем вывести на экран гистограмму , сколько пикслелей какой интенсивности от 0 до 256 по этим значениям и построить график.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2013, 16:15
Ответы с готовыми решениями:

Перевод изображений в BMP формат
помогите пожалуйста как какое нибудь изображение перевести в BMP формат, ну или чтобы оно сохранялось в BMP формате, а потом обратно...

Работа с разными типами изображений (преобразование к одному типу bmp)
Здравствуйте. Есть код: TImage *Infile = new TImage(); TMemoryStream *s = new TMemoryStream; TStringList *ImageSignature = new...

Обработка изображений
Здравствуйте! Помогите пожалуйста. Нужно в какой-либо массив загрузить до 100 изображений, каждое из них обработать и построить графики...

10
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
17.04.2013, 14:49
добавить на форму имадж, чарт, на чарт добавить серию с типом бар, на форму положить кнопку в обработчике которой написать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    if (!OpenDialog1->Execute()) return;
 
    Image1->Picture->Bitmap->LoadFromFile(OpenDialog1->FileName);
 
    int n[256];
    memset(n, 0, sizeof(n));
 
    for (int y = 0; y < Image1->Picture->Bitmap->Height; y++)
    {
        Byte *p = (Byte *)Image1->Picture->Bitmap->ScanLine[y];
        for (int x = 0; x < Image1->Picture->Bitmap->Width; x++)
        {
            n[p[x]]++;
        }
    }
 
    Chart1->Series[0]->Clear();
 
    for (int i = 0; i < 256; i++)
    {
        Chart1->Series[0]->AddXY(i, n[i]);
    }
2
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8
18.04.2013, 13:33  [ТС]
Добавлено через 6 минут
Главная проблема была у меня в том что не получалось отделить от bmp часть заголовка, и выделить сам массив....
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
18.04.2013, 13:48
зачем же вы его вручную читали? не, так конечно тоже можно, но зачем. проблему решили?
1
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8
18.04.2013, 16:41  [ТС]
Спасибо за Ваш комментарий!Да я не знал с какой стороны даже подойти, до этого делал всё в мат каде) а теперь вот стенд придётся делать для диплома оптический на кафедре и надо чтоб была какая то прога чтоб на экране показывала гистаграмму среднеквадратическое отклонение дисперсию для фото, а так то у меня там видео запись с телескопа... я её на кадры разбиваю и обрабатываю! Сегодня не успею посмотреть на выходных с этим ещё посижу!
0
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8
26.04.2013, 14:25  [ТС]
vxg, Спасибо, всё отлично заработало!!!!
0
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8
08.05.2013, 13:27  [ТС]
vxg, Не подскажете как мне для массива изобраения вычислить среднее значение и дисперсию, как мне обратиться к этому массиву который считывается , можно ли сам массив сохранить как .txt
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
08.05.2013, 13:42
Цитата Сообщение от Greentown Посмотреть сообщение
Не подскажете
мат ожидание
C++
1
2
3
4
5
6
7
8
9
10
    int M = 0;
    for (int y = 0; y < Image1->Picture->Bitmap->Height; y++)
    {
        Byte *p = (Byte *)Image1->Picture->Bitmap->ScanLine[y];
        for (int x = 0; x < Image1->Picture->Bitmap->Width; x++)
        {
            M += p[x];
        }
    }
    M /= Image1->Picture->Bitmap->Width * Image1->Picture->Bitmap->Height;
дисперсия
C++
1
2
3
4
5
6
7
8
9
10
11
    int D = 0;
    for (int y = 0; y < Image1->Picture->Bitmap->Height; y++)
    {
        Byte *p = (Byte *)Image1->Picture->Bitmap->ScanLine[y];
        for (int x = 0; x < Image1->Picture->Bitmap->Width; x++)
        {
            int d = M - p[x];
            D += d * d;
        }
    }
    D /= Image1->Picture->Bitmap->Width * Image1->Picture->Bitmap->Height;
Добавлено через 3 минуты
Цитата Сообщение от Greentown Посмотреть сообщение
как мне обратиться к этому массиву который считывается , можно ли сам массив сохранить как .txt
это не вполне массив - это графический файл. мы обращаемся к цветам его точек. вы хотите весь этот блок данных выгрузить в текст? ммм... нафига? если хотите, то
C++
1
2
3
4
5
6
7
8
9
10
    FILE *f = fopen("xxx.txt", "w");
    for (int y = 0; y < Image1->Picture->Bitmap->Height; y++)
    {
        Byte *p = (Byte *)Image1->Picture->Bitmap->ScanLine[y];
        for (int x = 0; x < Image1->Picture->Bitmap->Width; x++)
        {
            fprintf(f, "%i\n", (int)p[x]);
        }
    }
    fclose(f);
1
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8
13.05.2013, 09:17  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
это не вполне массив - это графический файл. мы обращаемся к цветам его точек. вы хотите весь этот блок данных выгрузить в текст? ммм... нафига? если хотите, то
vxg, вообще по идеи тут стоит вопрос анализа чёрно белых изображений полученых при разбивании на кадры видео , которое получено с телескопа!И потом его анализ, выделение ярких объектов итд!Попросили сделать чтоб можно было весь кадр посмотреть, зачем я пока толком не понял!
0
14.05.2013, 10:11

Не по теме:

Цитата Сообщение от Greentown Посмотреть сообщение
телескоп
круто. расскажите потом что вышло :)

1
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 8
21.05.2013, 14:56  [ТС]
vxg, Как работа будет готова покажу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2013, 14:56
Помогаю со студенческими работами здесь

Загрузка и обработка нескольких изображений
Добрый день. Имеется необходимость загрузить серию изображений(одного размера) для статистической обработки. То есть, загружается вся...

Обработка изображений
Здравствуйте. В С не программировал никогда. Необходимо реализовать алгоритм обработки изображения на С++ с использованием только...

OpenCV/C++ обработка изображений
В общем задача следующая, есть изображение(бинарное), подсчитать кол-во объектов т.е изначально нужно его промаркировать. Использовал...

Обработка изображений - стандартные эффекты фотошопа
Подскажите пожалуйста какую нибудь библиотеку на C\C++ или даже C# с помощью которой можно было бы применять некоторые эффекты для фото...

Обработка изображений: получить координаты центра самой большой красной банки на фотографии
Есть фотография. На фотографии банки красного цвета. Надо получить координаты центра самой большой банки. Кто может посоветовать, как это...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru