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

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

24.11.2011, 18:02. Показов 2552. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru