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);

}

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

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


 

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

41052. Культура и цивилизация 407 KB
  История культуры может быть рассмотрена двояко, как процесс и как деятельность. Как процесс она носит объективный характер, подчиняется определенным законам и теснейшим образом связана с социальными структурами и обслуживающими их институтами.
41053. Поняття про речове забезпечення. Значення та завдання речового забезпечення 112 KB
  Природними потребами нормальної життєдіяльності людей є їжа, одяг, паливо, житло. Без відомого мінімуму предметів речового майна неможлива бойова діяльність людей, тому що вони задовольняють життєво важливі потреби особового складу військ і створюють необхідні умови для виконання різноманітних бойових задач.
41054. Номенклатура та класифікація речового майна 104.5 KB
  Найважливішими особливостями післявоєнного етапу розвитку Збройних Сил є якісні зміни в їхній організації і технічному оснащенні, що виникли на основі новітніх досягнень науки і техніки, неухильного розвитку вітчизняної економіки
41055. Організація та завдання речової служби військової частини 111 KB
  Речова служба має велику роль у справі укріплення внутрішнього порядку у частинах, підрозділах. Підтримання статутного внутрішнього порядку – службовий обов’язок всіх категорій посадових осіб, утому числі спеціалістів тилу.
41056. Порядок складання, оформлення та ведення облікових документів 122.5 KB
  Організація обліку матеріальних засобів речової служби у військовій частині. Для студентів спеціальності Організація обєднаного забезпечення в наземних військах та авіації Навчальна та виховна мета: Ознайомити студентів з організацією обліку речового майна у військовій частині. Успішне рішення задач будівництва держави вимагає повсюдного впровадження наукової організації обліку. У рішеннях уряду підкреслюється необхідність поліпшувати систему обліку і звітності...
41057. Порядок зарахування військової частини на речове забезпечення.Витребування речового майна 104 KB
  Речове забезпечення військової частини у мирний час Витребування і отримання речового майна військовою частиною†Для студентів спеціальності “Організація обєднаного забезпечення в наземних військах та авіаціїâ€ Навчальна та виховна мета: Розширити та поглибити теоретичні знання студентів з питань зарахування військової частини на речове забезпечення витребування речового майна та отримання його зі складу оперативного...
41058. Вимоги щодо зберігання речового майна 131 KB
  Організація зберігання речового майна у військовій частині. Організація зберігання речового майна у військовій частині. Для студентів спеціальності “Організація обєднаного забезпечення в наземних військах та авіаціїâ€ Навчальна та виховна мета:Ознайомити студентів з загальними вимогами щодо зберігання речового майна у військовій частині.
41059. Право та порядок зарахування військовослужбовців на речове забезпечення 93.5 KB
  Забезпечення речовим майном особового складу військової частини Забезпечення речовим майном військовослужбовців строкової служби та військовослужбовців які проходять службу за контрактом†Для студентів спеціальності €œОрганізація обєднаного забезпечення в наземних військах та...
41060. Порядок забезпечення речовим майном офіцерів, прапорщиків та військовослужбовців жінок 208.5 KB
  €œОрганізація речового забезпечення Забезпечення речовим майном особового складу військової частини €œЗабезпечення речовим майном офіцерів прапорщиків та військовослужбовцівжінок†Для студентів спеціальності “Організація обєднаного забезпечення в наземних військах та авіації