51343

Работа с пикселями изображения

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы: Написать программу, осуществляющую побитовое копирование из одного изображения в другое. Изображение открывается через диалог открытия файла с расширением .bmp. Копированию подлежит только одна из составляющих цвета (красная-зелёная-синяя).

Русский

2014-02-09

673 KB

11 чел.

Лабораторная работа 1

Работа с пикселями изображения

Выполнил: Шуклецов М.А.

 ФРТ, гр. 2106

Цель работы: Написать программу, осуществляющую побитовое копирование из одного изображения в другое. Изображение открывается через диалог открытия файла с расширением *.bmp. Копированию подлежит только одна из составляющих цвета (красная-зелёная-синяя).

При выполнении лабораторной работы, я за исходное изображение взял:

 

Общий вид программы следующий:

Здесь мы видим следующие элементы управления:

«Выбор картинки» - через OpenDialog мы выбираем изображение, путь к которому отображается в окне Edit

«Red», «Green», «Blue» - кнопки, показывающие один из цветов, т.е. красный-зеленый-голубой соответственно (применен зелёный фильтр)

«Обратить цвета» - выполняет команду обращения цвета (доп. задание), т.е. мы получаем

Код программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

Graphics::TBitmap* pBitmap1 = new Graphics::TBitmap();

Graphics::TBitmap* pBitmap2 = new Graphics::TBitmap();

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)  // Кнопка «Выбор картинки»

{

if(OpenDialog1->Execute())     //Открытие диалогового окна

{

  Edit1->Text=OpenDialog1->FileName;   //При Выборе происходит запись пути в Edit

  pBitmap1->LoadFromFile(Edit1->Text);   //Загрузка картинки в память по указателю

 }

Image1->Left=0;       

Image1->Top=0;      //Задание начального положения для Image1

 Image1->Width=pBitmap1->Width;

Image1->Height=pBitmap1->Height;   //Задание размеров для Image1

Image1->Picture->Assign(pBitmap1);   //Загрузка изображения в Image1

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)   //Кнопка «Green»

{

if(pBitmap1->PixelFormat == pf24bit)     //Проверка изображения на битность

{

 Byte G;   

 Byte *ptr;

 int x,y;        //Инициализация переменных

 pBitmap1->LoadFromFile(Edit1->Text);

for(y=0; y < pBitmap1->Height; y++)    

 {

   ptr=(Byte*)pBitmap1->ScanLine[y];

   for(x=0; x < pBitmap1->Width; x++)

       {

        G = *(ptr + x*3+1);      //Вычисление значения зеленого цвета

        pBitmap1->Canvas->Pixels[x][y] = TColor(RGB(0,G,0)); //Загрузка в память полученного изобр.

       }

 }

}

Image1->Picture->Assign(pBitmap1);    //Заполнение Image1 Полученным изобр.

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)  //Кнопка «Red»

{

if(pBitmap1->PixelFormat == pf24bit)

{

 Byte R;

 Byte *ptr;

 int x,y;

 pBitmap1->LoadFromFile(Edit1->Text);

for(y=0; y < pBitmap1->Height; y++)

 {

   ptr=(Byte*)pBitmap1->ScanLine[y];

   for(x=0; x < pBitmap1->Width; x++)

       {

       R = *(ptr + x*3);

       pBitmap1->Canvas->Pixels[x][y] = TColor(RGB(R,0,0));

       }

 }

}

Image1->Picture->Assign(pBitmap1);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)  // Кнопка «Blue»

{

if(pBitmap1->PixelFormat == pf24bit)

{

 Byte B;

 Byte *ptr;

 int x,y;

 pBitmap1->LoadFromFile(Edit1->Text);

for(y=0; y < pBitmap1->Height; y++)

 {

   ptr=(Byte*)pBitmap1->ScanLine[y];

   for(x=0; x < pBitmap1->Width; x++)

       {

       B = *(ptr + x*3+2);

       pBitmap1->Canvas->Pixels[x][y] = TColor(RGB(0,0,B));

       }

 }

}

Image1->Picture->Assign(pBitmap1);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)  //Кнопка «Обратить цвета»

{

if(pBitmap1->PixelFormat == pf24bit)

{

 Byte R,G,B;

 Byte *ptr;

 int x,y;

 pBitmap1->LoadFromFile(Edit1->Text);

for(y=0; y < pBitmap1->Height; y++)

 {

   ptr=(Byte*)pBitmap1->ScanLine[y];

   for(x=0; x < pBitmap1->Width; x++)

       {

       R = *(ptr + x*3);

       G = *(ptr + x*3+1);

       B = *(ptr + x*3+2);

       pBitmap1->Canvas->Pixels[x][y] = TColor(RGB(255-R,255-G,255-B));

       }

 }

}

Image1->Picture->Assign(pBitmap1);

}

//---------------------------------------------------------------------------

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


 

А также другие работы, которые могут Вас заинтересовать

49. Оформлення каталогу творчих робіт на тему: Моделювання та макетування 287.5 KB
  Технології виготовлення аплікації, історичні відомості, система орієнтування, оздоблення акцидентними шрифтами. використання каталогів для рекламних та ознайомчих, інформаційних цілей, підготовка та вибір матеріалів до друку.
50. Securities exchange. Most common and most unrestricted type of bank 304 KB
  Most common and most unrestricted type of bank, allowed the most latitude in its services and investments are called, despite the measures taken last year to cut their risky investments and the overall size of their portfolios.
51. История создания и специфика работы пистолета-пулемета Томпсона 533.92 KB
  Томми-ган, автомат Томпсона, пистолет-пулемет Томпсона, чикагское пианино, траншейная метла, дьявольская машина смерти и даже двигатель торговли – все это названия самого гангстерского в мире оружия, которое стало символом американских гангстерских воин и хорошо зарекомендовало себя на полях сражений.
52. Технический уровень производства алюминия с использованием электролиза 218 KB
  Плотность тока зависит от футеровки электролизера и площади поверхностей теплоотдачи корки электролита. Непрерывность процесса электролиза, определение производительности и удельного расхода сырья. Материальный баланс электролизера на силу тока 165 кА.
53. Оцінка навчальної гігієни Технічного коледжа ТНТУ ім. І. Пулюя 121.5 KB
  Опитування студентів групи ОКС-406 з використанням хронометражного листа, ознайомлення з планом виховної роботи куратора групи. Аналіз розміщення меблів в навчальних приміщеннях та дослідження освітленості класів.
54. Методичні вказівки до виконання лабораторних робіт в редакторі КОМПАС-ГРАФІК для Windows 996 KB
  Робота з панелями графічного креслярсько-конструкторського редактора КОМПАС-ГРАФІК для Windows, Ввід даних і виразів в поля Стічки параметрів об’єктів. Використання допоміжних побудов. Проставлення розмірів в КОМПАС-ГРАФІК для Windows.
55. Харьковский украинский драматический театр имени Т.Г. Шевченко 381.5 KB
  Блестящий исполнитель комических ролей в пьесах русских и зарубежных классиков - Н.В. Гоголя, А.С. Грибоедова, Ж.Б. Мольера, — М. Щепкин стоял у истоков украинского национального театра. В историю харьковского театра Л.Ю. Млотковский вошел как организатор строительства первого каменного здания театра.
56. Устройство подземной части здания. Проектирование фундамента 456 KB
  Выбор комплекта машин для производства земляных работ. Технико-экономическое сравнение вариантов. Сводная ведомость объема земляных работ, подсчет объемов по устройству монолитных фундаментов. Расчет технико-экономических показателей комплексного процесса.
57. Создание фирменного стиля модельной студии Модерн 654.5 KB
  Концепция нового фирменного стиля модельной студии Модерн, расценки на услуги рекламной фирмы (нанесение изображения на жилет и диск). Расчет суммы, необходимой на реализацию предложенного фирменного стиля модельной студии \"Модерн\"