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

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

24.11.2011, 18:02. Показов 2564. Ответов 10
Метки нет (Все метки)

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

Никак не могу найти как загрузить картинки.
Возможно ли из PictureDialog загрузить в вектор?потом итератором пройтись по всем и все?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2011, 18:02
Ответы с готовыми решениями:

Обработка .bmp изображений
Помогите пожалуйста с програмкой до этого делал в маткаде) а сейчас надо в билдере по тихоньку вникаю не очень получается. Нужно по битово...

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

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

10
 Аватар для Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 314
24.11.2011, 20:38
Не думаю, что все выйдет так просто..
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
24.11.2011, 20:40
Цитата Сообщение от Sor Посмотреть сообщение
каждое из них обработать и построить графики соответствующие
А под словом "соответствующие" ты что подразумеваешь?
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
24.11.2011, 21:06  [ТС]
Цитата Сообщение от lazybiz Посмотреть сообщение
А под словом "соответствующие" ты что подразумеваешь?
Тут у меня проблем нету. Считаются 23характеристики,по графикам которых потом определяется резкое изображение из серии (заготовки для автофокуса микроскопа).
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
24.11.2011, 21:19
Ну так опиши конкретно что не получается.
Загрузить 100 изображений можно, но вектор - это плохая идея.
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
24.11.2011, 23:16  [ТС]
для проверки расчетов я использовал 2 картинки (что бы было видно наглядно). 1ая оригинал, 2ую я менял.
я не знаю как загрузить сразу много картинок, в этом, собственно, и вопрос.

мои мысли такие: загружу в массив, а потом буду циклом ходить по элементам и каждую обрабатывать. можно для визуального представления оставить n-ый элемент (т.е. какое-то изображение) в image.
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 if(!OpenPictureDialog1->Execute()) return;
 bmp1->LoadFromFile(OpenPictureDialog1->FileName);
 Image1->Picture->Bitmap=bmp1;
 bmp1->PixelFormat=pf24bit;
  bmp2->Assign(bmp1);
 Image2->Picture->Bitmap=bmp2;
  bmp2->PixelFormat=pf24bit;
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
26.11.2011, 20:35  [ТС]
делаю как показано ниже,но в вектор заносятся не рисунки,а пустые холсты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Graphics::TBitmap*srcbmp;
   vector<Graphics::TBitmap*>VB;
if(!OpenDialog1->Execute()) return;
 
        TSearchRec Rec;
AnsiString Path = ExtractFilePath(OpenDialog1->FileName);
 
ListBox1->Refresh();
if (FindFirst(Path + "*.bmp", faAnyFile, Rec)==0)
do
{
 
    srcbmp->LoadFromFile(Rec.Name);
   //   srcbmp->HandleType=bmDIB;
   //   srcbmp->PixelFormat=pf32bit;
    ListBox1->Items->Add(Rec.Name);
    VB.push_back(srcbmp);
}
while (FindNext(Rec) == 0) ;
Label2->Caption=VB.size();
FindClose(Rec);
 
  Image1->Refresh();
Добавлено через 2 часа 45 минут
Ошибка памяти в примере выше.
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
01.12.2011, 19:42  [ТС]
все сделал через функцию
C++
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
39
40
41
42
43
44
45
46
Graphics::TBitmap* srcbmp = new Graphics::TBitmap(); // создраем
vector<Graphics::TBitmap*> VB; //вектор для загрузки изображений
vector <Graphics::TBitmap*> I; //2й
 
  //описание функции копирования
void TForm1::CopyBMP(Graphics::TBitmap* to,Graphics::TBitmap* fr)
{
     to->Height=fr->Height;
     to->Width=fr->Width;
     to->HandleType=fr->HandleType;
     to->PixelFormat=fr->PixelFormat;
     for(int i=0;i<to->Height;++i)
     {
      Byte* srcptr=(Byte*)fr->ScanLine[i];
      Byte* recptr=(Byte*)to->ScanLine[i];
      for(int j=0;j<to->Width*3;++j)
        recptr[j]=srcptr[j];
     }
}
 
//и сама загрузка:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//VB.clear();
if(!OpenDialog1->Execute()) return;
 
TSearchRec Rec;
AnsiString Path = ExtractFilePath(OpenDialog1->FileName);   
ListBox1->Refresh();
if (FindFirst(Path + "*.bmp", faAnyFile, Rec)==0)
do
{
    bmp1->LoadFromFile(Rec.Name);
    bmp1->HandleType=bmDIB;
    bmp1->PixelFormat=pf24bit;
 
    VB.push_back(new Graphics::TBitmap);
    CopyBMP(VB.back(),bmp1);               //загружаем в VB через bmp1
    I.push_back(new Graphics::TBitmap);
    CopyBMP(I.back(),bmp1);               //загружаем в I через bmp1
    ListBox1->Items->Add(Rec.Name);
}
while (FindNext(Rec) == 0) ;
Label2->Caption=VB.size();
FindClose(Rec);
Image1->Refresh();
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.12.2011, 20:05
Блин, дружище.., это что ж Builder.. Извини, не там ответил.., не подскажу.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
02.12.2011, 01:43
ofAllowMultiSelect. А грузишь тупо в массив, что-то вроде Graphics::TBitmap *BMP = new Graphics::TBitmap[100];
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
02.12.2011, 01:52
Sor, думаю тебе будет интересен мой код

Итак, моя простенькая программа: на форме TButton, TListBox, TImage
По нажатию на кнопку загружаю все картинки из определенной директории,
добавляю в TListBox запись с именем файла и указатель на область памяти с TBitmap.
При нажатии на элемент в TListBox, копирую TBitmap в TImage
П.С. Как ты понял, контейнером у меня и является сам TListBox

C++
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <IOUtils.hpp>
 
// получить картинку по индексу в списке
Graphics::TBitmap *GetBitmapFromLBItem(TListBox *AListBox, const int &iIndex) {
    Graphics::TBitmap *ABitmap = NULL;
    if (iIndex<AListBox->Count) {
          TObject *AObject = AListBox->Items->Objects[iIndex];
          if (AObject) {
                ABitmap = dynamic_cast<Graphics::TBitmap *>(AObject);
          }
    }
    return ABitmap;
}
 
// очистить список с картинками
void ClearListBoxBitmapData(TListBox *AListBox) {
    for (int i = 0; i < AListBox->Count; i++) {
        Graphics::TBitmap *ABitmap = GetBitmapFromLBItem(AListBox,i);
        if (ABitmap) {
            delete ABitmap;
            ABitmap = NULL;
        }
    }
}
 
//---------------------------------------------------------------------------
void __fastcall TForm3::btnTestClick(TObject *Sender) {
    // очистим список
    ClearListBoxBitmapData(lstbxTest);
 
    // получаем список всех файлов в директории по маске *.bmp
    const TStringDynArray ADynArray =
        TDirectory::GetFiles
        ("c:\\Documents and Settings\\Администратор\\Мои документы\\Мои рисунки\\",
        "*.bmp");
    for (int i = 0; i < ADynArray.Length; i++) {
        try {
             // выделяем память под картинку
             Graphics::TBitmap *ABitmap = new Graphics::TBitmap;
             ABitmap->LoadFromFile(ADynArray[i]);
             // создаём соответствующий элемент в списке,
             // используя свойство Objects класса TStrings,
             // запоминаем в него указатель на TBitmap
             lstbxTest->AddItem(TPath::GetFileName(ADynArray[i]),ABitmap);
        } catch (...) {
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm3::lstbxTestClick(TObject *Sender)
{
     for (int i=0; i < lstbxTest->Count; i++) {
          if (lstbxTest->Selected[i]) {
               imgTest->Picture->Assign(GetBitmapFromLBItem(lstbxTest,i));
               break;
          }
     }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
     // очищаем при закрытии список,
     // удаляем созданные указатели
     ClearListBoxBitmapData(lstbxTest);
}
//---------------------------------------------------------------------------
УПС, забыл очистку строк в листбоксе дописать AListBox->Items->Clear();

C++
1
2
3
4
5
6
7
8
9
10
11
// очистить список с картинками
void ClearListBoxBitmapData(TListBox *AListBox) {
        for (int i = 0; i < AListBox->Count; i++) {
                Graphics::TBitmap *ABitmap = GetBitmapFromLBItem(AListBox,i);
                if (ABitmap) {
                        delete ABitmap;
                        ABitmap = NULL;
                }
        }
        AListBox->Items->Clear();
}
Вот так примерно это выглядит
Миниатюры
Обработка изображений   Обработка изображений   Обработка изображений  

Обработка изображений  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2011, 01:52
Помогаю со студенческими работами здесь

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

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

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

Низкочастотная фильтрация изображений (книга Гонсалеса “Цифровая обработка изображений”)
Здравствуйте. Я пытаюсь реализовать на java низкочастотную фильтрацию изображений. Реализую по книге Гонсалеса &quot;Цифровая...

Обработка изображений. Изменение размеров изображений
Подскажите пожалуйста, как изменить размер изображения в MathCad. Какой код нужен для уменьшения/увеличения изображения?


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

Или воспользуйтесь поиском по форуму:
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