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

}

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

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


 

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

16465. ОБЕСПЕЧЕНИЕ МЕЖДУНАРОДНОЙ БЕЗОПАСНОСТИ 99 KB
  11 Лекция № 8. ОБЕСПЕЧЕНИЕ МЕЖДУНАРОДНОЙ БЕЗОПАСНОСТИ 1. Понятие и система международной безопасности. 2. Мирное урегулирование международных споров. 1. На всем протяжении человеческой истории чрезвычайную актуальность имела проблема недопущени...
16466. МЕЖДУНАРОДНОЕ ГУМАНИТАРНОЕ ПРАВО 93 KB
  Лекция № 9. МЕЖДУНАРОДНОЕ ГУМАНИТАРНОЕ ПРАВО. 1. Понятие и источники международного гуманитарного права. 2. Права человека: понятие классификация и стандарты в международном праве. 3. Система межгосударственного сотрудничества в области прав человека. 1. Нормы ме...
16467. МЕЖДУНАРОДНАЯ ОТВЕТСТВЕННОСТЬ И МЕЖДУНАРОДНОЕ УГОЛОВНОЕ ПРАВО 72 KB
  Лекция № 10. МЕЖДУНАРОДНАЯ ОТВЕТСТВЕННОСТЬ И МЕЖДУНАРОДНОЕ УГОЛОВНОЕ ПРАВО. 1. Ответственность в международном праве. 2. Понятие особенности и правовая природа международного сотрудничества в борьбе с преступностью. 3. Преступления имеющие международный уголовный...
16468. Важнейшие подотрасли международного публичного права 44 KB
  Лекция. Важнейшие подотрасли международного публичного права. 1. Международное морское право. 2. Международное воздушное право. 3. Международное космическое право. 1. Международное морское право совокупность норм международного права регулирующих отношения ме...
16469. Муниципальное право 995 KB
  Глава 1 МУНИЦИПАЛЬНОЕ ПРАВО КОМПЛЕКСНАЯ ОТРАСЛЬ ПРАВА Понятие €œмуниципальное право€ новое для нашего государствоведения хотя вопросы муниципального управления муниципального хозяйства в свое время являлись предметом исследования юристов и деятелей земского...
16470. Основи конституційного ладу України 378 KB
  НАЦІОНАЛЬНА АКАДЕМІЯ НАУК УКРАЇНИ ІНСТИТУТ ДЕРЖАВИ І ПРАВА ім. В. М. КОРЕЦЬКОГО В. Ф. ПОГОРІЛКО основи конституційного ЛАДУ УКРАЇНИ Київ Ін Юре 1997 ББК 67.94УКР300 1143 Погорілко В. Ф. П43Основи конституційного ладу України. К.: Ін Юре 1997. 40
16471. Права та свободи людини і громадянина в Україні 494 KB
  НАЦІОНАЛЬНА АКАДЕМІЯ НАУК УКРАЇНИ ІНСТИТУТ ДЕРЖАВИ І ПРАВА ім. В. М. КОРЕЦЬКОГО В. Ф. ПОГОРІЛКО В. В. ГОЛОВЧЕНКО М. І. СІРИЙ ПРАВА ТА СВОБОДИ ЛЮДИНИ І ГРОМАДЯНИНА В УКРАЇНІ Київ Ін Юре 1997 ББК 67.94УКР300 П43 Погорілко В. Ф. Головчен...
16472. Президент України 276.5 KB
  У брошурі розглядаються питання запровадження в Україні інституту президентства, аналізується конституційний статус Президента як глави держави, висвітлюється порядок його обрання і вступу на посаду. Особлива увага приділяється розгляду конституційних повноважень Президента, його відносини з іншими інститутами державної влади, роль у забезпеченні державного суверенітету України, прав та свобод людини і громадянина.
16473. Верховна Рада України 403.5 KB
  НАЦІОНАЛЬНА АКАДЕМІЯ НАУК УКРАЇНИ ІНСТИТУТ ДЕРЖАВИ І ПРАВА ім. В. М. КОРЕЦЬКОГО Л. Т. КРИВЕНКО ВЕРХОВНА РАДА УКРАЇНИ Київ Ін Юре 1997 ББК 67.94УКР300.6 К82 Кривенко Л. Т. К82Верховна рада України. К.: 1н Юре 1997. 47 с Бчка Нова Конституція Украї