Розробка програмного забезпечення для роботи з веб-камерою

 

Зміст


Перелік скорочень, умовних позначень і термінів

Вступ

1.Загальна частина

1.1 Постановка задачі

1.2 Опис предметної області

.3 Характеристика апаратно-програмної частини

1.4 Опис мови і середовища програмування

1.4.1 Список використаних компонентів в програмі

2.Спеціальна частина

2.1 Розробка алгоритму та його опис

.2 Створення та тестування програми

2.3Керівництво програміста

.4Керівництво користувача

Висновки

Список літератури

Додаток

програма веб камера комп'ютер

Перелік скорочень, умовних позначень і термінів


Веб-камера - цифрова відео чи фотокамера, яка має можливість в реальному часі фіксувати зображення, призначені для подальшої передачі на інший носій або до мережі інтернет.

Відео - широкий спектр технології запису, обробки, передачі, зберігання й відтворення візуального і аудіовізуального матеріалу на моніторах.


Вступ


У наш час жодна людина не може обійтись без компютера. Це незамінний помічник у побуті та необхідна складова будь-якого підприємства.

Сьогодні майже кожен має персональний компютер, ноутбук, або смартфон. Більшість сучасних компютерів має графічний адаптер, що дозволяє програмувати окремі етапи графічного конвеєра.

Розроблюваний у даній курсовій роботі проект має інтуїтивно зрозумілий інтерфейс користувача, тому навіть людина, що ніколи не мала справу з компютером зможе викоруристовувати функцію перегляду фракталів, а людина з досвідом програмування зможе ще й створювати власні шейдерні програми та компілювати їх.

Останнім часом різко зросла потреба у спеціалістах з розробки програмного забезпечення з графічним інтерфейсом користувача. Це звязано з розвитком і впровадженням у повсякденне життя інформаційно-комунікаційних технологій, зокрема Інтеренту.

Серед користувачів персональних компютерів у даний час найбільш популярне сімейство операційних систем Windows, а також набирають популярність дистрибутиви Linux, зокрема сімейства Debian.

Бурхливий розвиток обчислювальної техніки, потреба в ефективних засобах розробки програмного забезпечення призвели появу систем програмування, орієнтованих на так звану "швидку розробку".

Embarcaderro RAD Stusio - це інтегроване середовище програмування. Створення цієї програми було лише на ОС Windows. За допомогою нього створюються різні програми, віруси, ігри, гаджети і так далі.


.Загальна частина


1.1 Постановка задачі


Написати програму, призначену для роботи з веб-камерою з автоматичним визначенням встановленої камери на компютері.


1.2 Опис предметної області


На даний час створено багато програм для запису відео, його обробки та інше. З появою веб-камер призначення відео набуло сенсу як транслювання відео іншій особі. Наприклад по мережі інтернет - Skype. Саме тому мною і була створена програма для запису відео з веб-камери, його збереженню та відправці.


.3 Характеристика апаратно-програмної частини


Програма даної курсової роботи розроблялась на компютері з наступною апаратною і програмною конфігурацією (таблиця 1.1).


Таблиця 1.1

ХарактеристикаЗначенняАпаратна конфігураціяТип центрального процесораIntel Pentium B980, 2.4GhzЧіпсет системної платиIntel HM65Системна память4 Gb DDR3-1600 Тип BIOSX55A.413, 20.08.2012ВідеоадаптерIntel HD Graphics 2000 512 MbЖорсткий дискHitachi HTS545050A7E380, 500 GbПрограмна конфігураціяОпераційна системаMicrosoft Windows 7 UltimateВерсія ОС6.1.7601Тип ядра ОС64-bitПакет оновленняService Pack 1Дата інсталяції16.05.2013Середовище програмуванняEmbarcadeo RAD Studio XE3Версія середовища програмування17.0.4625.53395

1.4 Опис мови і середовища програмування


3 вересня 2012 компанія Embarcadero представила нову версію пакету візуальної розробки додатків - RAD Stuido XE3. Як і попередня версія, XE3 включає в себе чотири основних інструменти - Delphi, C + + Builder, Embarcadero Prism і HTML5 Builder (раніше називався RAD PHP). Природно, Delphi, як найбільш популярний продукт даної серії, викликає найбільший інтерес. Разом з попередньою версією Delphi і C + + Builder була випущена нова платформа розробки бізнес додатків - FireMonkey. Програми, створені за допомогою даної платформи, могли компілюватися не тільки під Windows, але і під MacOS і навіть iOS (із застереженнями). Надалі передбачалося розширення списку підтримуваних платформ, в тому числі і за рахунок мобільних платформ (повна підтримка iOS і Android). Минула версія RAD Studio виявилася багатою на нововведення не тільки в плані функціоналу. Крім звичайних ліцензій (Professional, Enterprise і Architect) була введена ще одна, призначена для розробників, щільно працюють з БД (Ultimate). Напередодні ж виходу XE3 поширилася інформація про нібито підготовлювані зміни в EULA Professional ліцензії. Однак до випуску релізу було прийнято остаточне рішення залишити підтримку клієнт-серверних СУБД в Professional редакції. Що ж ми отримали в даному релізі?

·Metropolis UI для FireMonkey і VCL додатків;

·Вдосконалену версію FireMonkey (TActionList, програвачі медіа файлів, удосконалення в IDE для FM проектів та багато іншого);

·Оновлений механізм LiveBindings (включаючи візуальний дизайнер LiveBindings);

·Зміни в IDE для MacOS проектів.

На відміну від попередньої версії до складу студії не увійшов Embarcadero Prism.

Опис мови Delphi

Delphi - імперативна, структурована, обєктно орієнтована мова програмування, діалект Object Pascal. Починаючи з середи розробки Delphi 7 в офіційних документах Borland стала використовувати назву Delphi для позначення мови Object Pascal. Починаючи з 2007 року вже мова Delphi почала жити самостійним життям і зазнала різких змін, повязаних з сучасними тенденціями розвитку мов програмування : зявивилися class helpers, перевантаження операторів та інше.Pascal - результат розвитку мови Турбо Паскаль, який, у свою чергу, розвинувся з мови Паскаль. Паскаль був повністю процедурною мовою, Турбо Паскаль, починаючи з версії 5.5, додав до Паскаль об'єктно-орієнтовані властивості, а в Object Pascal - динамічну ідентифікацію типу даних з можливістю доступу до метаданих класів (тобто до опису класів та їх членів) у скомпільованому коді. також званому інтроспекцією - дана технологія отримала позначення RTTI. Так як всі класи успадковують функції базового класу TObject, то будь-який покажчик на об'єкт можна перетворити до нього, після чого скористатися методом ClassType і функцією TypeInfo, які й забезпечать інтроспекцію. Також відмітною властивістю Object Pascal від С + + є те, що об'єкти за замовчуванням розташовуються у динамічній пам'яті. Однак можна перевизначити віртуальні методи NewInstance і FreeInstance класу TObject. Таким чином, абсолютно будь-який клас може здійснити "бажання" "де хочу - там і буду лежати". Object Pascal (Delphi) є результатом функціонального розширення Turbo Pascal.


1.4.1 Список використаних компонентів в програмі

= class(TForm): TButton;: TListBox;: TPanel;: TButton;: TListBox;: TButton;: TButton;: TButton;: TSaveDialog;: TPanel;: TMainMenu;: TMenuItem;: TMenuItem;CreateGraph: HResult;Initializ: HResult;Button1Click(Sender: TObject);FormCreate(Sender: TObject);Button2Click(Sender: TObject);FormDestroy(Sender: TObject);Button3Click(Sender: TObject);DisplayPropertyFrame(Filter: IBaseFilter; Handle: THandle): HResult;Button4Click(Sender: TObject);Button5Click(Sender: TObject);ListBox1DblClick(Sender: TObject);ListBox2DblClick(Sender: TObject);N1Click(Sender: TObject);N2Click(Sender: TObject);


2.Спеціальна частина


.1 Розробка алгоритму та його опис


Рис 2.1. Алгоритм роботи программи


2.2 Створення та тестування програми


Створювалася програма в середовищі програмування Embarcadeo RAD Studio XE3.

Перед початком створення програми я проглянув багат програм які працюють з веб-камерою. Велика кількість функцій була включена в ці програми, проте мною було реалізовано лише запис відео у формат *AVI, *mp4 та збереження цього файлу і також налаштування та вибір веб-камери(адже їх може бути декілька), налаштування та вибір мікрофона. Програма має не складний інтерфейс, який складається всього з декілька кнопок та головного вікна трансляції відео. Налаштування камери та мікрофона не складає велику трудність для користувача.

Тестування програми мало декілька етапів. Першим з них було проектування та написання алгоритму. По цьому алгоритму і був створений інтерфейс та написаний код програми.

Перший запуск програми був не вдалий - збереження файлу вібдувалося в незрозумілому форматі. Після другого запуску запис відео не проводився саме не вибрану камеру. Виправлена ця помилка була дуже швидко. На кінцевому етапі проектування програма мала остаточний вигляд як зараз і працювала без помилок.


2.3 Керівництво програміста


Таблиця 2.1

ХарактеристикаЗначенняНазва програмиCamera_ProВерсія1АвторОвчаренко Микола СтаніславовичМова програмуванняDelphiРядків коду397Розмір виконуваного файлу1.97 mbМінімальні системні вимогиПроцесорx86-64 суміснийОперативна память128 Mb RAMОпераційна система1. Windows XP x32-64 bit 2. Windows 7 Ultimate x32-64 bit

2.4 Керівництво користувача


Програма Camera_Pro була створена для запису та збереження відео з вашої веб-камери.

Запуск програми здійснюється з меню пуск ОС Windows. Пуск -> Camera_Pro.


Рис 2.2. Головне вікно програми.


Елементи інтерфейсу (див. рис 2.2.):

.Область відображення веб-камери

.Кнопка запису відео

.Кнопка закінчення запису відео

.Головне меню програми

.Параметри камери

.Параметри відео

.Параметри звуку

.Перелік можливих використаних камер та мікрофонів

Рис 2.3. Налаштування камери.


Рис 2.4. Налаштування відео.


Рис 2.5. Налаштування мікрофону.


Користування програмою:

.Запустити програму

.Вибрати зі списку веб-камеру та мікрофон(якщо їх декілька)

.Налаштувати під себе камеру, відео та мікрофон

.Почати запис відео

.Зберегти відео

.Поторити пункт 2,3,4,5 заново обо закрити програму


Висновки


Завдання, поставлене в курсовому проекті, виконано. У середовищі візуального програмування створений проект, призначений для запису та збереженню відео.

Середовище програмування Rad Studio xe3 та сама мова Delphi дає змогу швидко, практично, зрозуміло та якісно зробити певну програму або інший обєкт для взаємодії з користувачем. Вся справа створення обєкту дуже легка і не потребує велику кількість часу. Тому ця мова програмування являється однією з перших, яку має вивчити програміст на початковій стадії свого життєвого шляху.

В даний час в наше життя широко впроваджуються інформаційні технології. На сьогоднішній день, напевно, не залишилося такої області, де б вони не застосовувалися. Дану програму можна використовувати де забажається і вона розповсюджена у вільний доступ.


Список літератури


.Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus. - Донецк.: ДонНТУ, Технопарк ДонНТУ УНИТЕХ, 2011.

.Википедия - свободная энциклопедия: [Електрон. ресурс]. - Режим доступу: #"justify">Додаток


Текст програми

Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, directshow9, ActiveX, Vcl.Menus, ShellApi;= class(TForm): TButton;: TListBox;: TPanel;: TButton;: TListBox;: TButton;: TButton;: TButton;: TSaveDialog;: TPanel;: TMainMenu;: TMenuItem;: TMenuItem;CreateGraph: HResult;Initializ: HResult;Button1Click(Sender: TObject);FormCreate(Sender: TObject);Button2Click(Sender: TObject);FormDestroy(Sender: TObject);Button3Click(Sender: TObject);DisplayPropertyFrame(Filter: IBaseFilter; Handle: THandle): HResult;Button4Click(Sender: TObject);Button5Click(Sender: TObject);ListBox1DblClick(Sender: TObject);ListBox2DblClick(Sender: TObject);N1Click(Sender: TObject);N2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;:string;: Boolean = False;:OleVariant;:IPropertyBag;:ICreateDEvEnum;:IEnumMoniker;:IMoniker;,MArray2: array of IMoniker;: IGraphBuilder;: ICaptureGraphBuilder2;: IBaseFilter;: IFileSinkFilter;: IMediaControl;: IVideoWindow;: IBaseFilter;: IBaseFilter;: TRect;

{$R *.dfm}TForm1.Initializ: HResult;:=CoCreateInstance(CLSID_SystemDeviceEnum, NIL, CLSCTX_INPROC_SERVER,_ICreateDevEnum, pDevEnum);Result<>S_OK then EXIT;:=pDevEnum.CreateClassEnumerator(CLSID_VideoInputDeviceCategory, pEnum, 0);Result<>S_OK then EXIT;(MArray1,0);(S_OK=pEnum.Next(1,pMoniker,Nil)) do(MArray1,length(MArray1)+1);[length(MArray1)-1]:=pMoniker;:=pMoniker.BindToStorage(NIL, NIL, IPropertyBag, PropertyName);FAILED(Result) then Continue;:=PropertyName.Read('FriendlyName', DeviceName, NIL);FAILED(Result) then Continue;.Items.Add(DeviceName);;:=pDevEnum.CreateClassEnumerator(CLSID_AudioInputDeviceCategory, pEnum, 0);Result<>S_OK then EXIT;(MArray2,0);(S_OK=pEnum.Next(1,pMoniker,Nil)) do(MArray2,length(MArray2)+1);[length(MArray2)-1]:=pMoniker;:=pMoniker.BindToStorage(NIL, NIL, IPropertyBag, PropertyName);FAILED(Result) then Continue;:=PropertyName.Read('FriendlyName', DeviceName, NIL);FAILED(Result) then Continue;.Items.Add(DeviceName);;ListBox1.Count=0 then('Камера не обнаружена');:=E_FAIL;;;;.ItemIndex:=0;ListBox2.Count=0 then('Микрофон не обнаружен');Listbox2.ItemIndex:=0;:=S_OK;;TForm1.CreateGraph:HResult;: IConfigAviMux;:= NIL;:= NIL;:= NIL;:= NIL;:= NIL;:= NIL;:= NIL;:= NIL;:=CoCreateInstance(CLSID_FilterGraph, NIL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, FGraphBuilder);FAILED(Result) then EXIT;:=CoCreateInstance(CLSID_CaptureGraphBuilder2, NIL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, FCaptureGraphBuilder);FAILED(Result) then EXIT;:=FCaptureGraphBuilder.SetFiltergraph(FGraphBuilder);FAILED(Result) then EXIT;Listbox1.ItemIndex>=0 then[Listbox1.ItemIndex].BindToObject(NIL, NIL, IID_IBaseFilter, FVideoCaptureFilter);.AddFilter(FVideoCaptureFilter, 'VideoCaptureFilter');;Listbox2.ItemIndex>=0 then[Listbox2.ItemIndex].BindToObject(NIL, NIL, IID_IBaseFilter, FAudioCaptureFilter);.AddFilter(FAudioCaptureFilter, 'AudioCaptureFilter');:=FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_PREVIEW, @MEDIATYPE_Audio,, NIL, NIL);FAILED(Result) then EXIT;;:=FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_PREVIEW, @MEDIATYPE_Video, FVideoCaptureFilter, NIL, NIL);FAILED(Result) then EXIT;:=FGraphBuilder.QueryInterface(IID_IVideoWindow, FVideoWindow);FAILED(Result) then EXIT;.put_WindowStyle(WS_CHILD or WS_CLIPSIBLINGS);.put_Owner(Panel1.Handle);:=Panel1.ClientRect;.SetWindowPosition(FVideoRect.Left,FVideoRect.Top, FVideoRect.Right - FVideoRect.Left,FVideoRect.Bottom - FVideoRect.Top);.put_Visible(TRUE);RecMode then:=FCaptureGraphBuilder.SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(FileName), FMux, FSink);FAILED(Result) then EXIT;:=FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Video, FVideoCaptureFilter, Nil, FMux);FAILED(Result) then EXIT;Listbox2.ItemIndex>=0 then:=FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_CAPTURE, @MEDIATYPE_Audio, FAudioCaptureFilter, Nil, FMux);FAILED(Result) then EXIT;:= NIL;:=FMux.QueryInterface(IID_IConfigAviMux, pConfigMux);FAILED(Result) then EXIT;.SetMasterStream(1);:= NIL;;;;:=FGraphBuilder.QueryInterface(IID_IMediaControl, FMediaControl);FAILED(Result) then Exit;.Run();;TForm1.Button1Click(Sender: TObject);Listbox1.Count=0 then('Внимание! Камера не обнаружена.');

Exit;;RecMode then Exit;.InitialDir:=GetCurrentDir;.DefaultExt := 'avi';not (SaveDialog1.Execute) then exit;:=SaveDialog1.FileName;:=True;FAILED(CreateGraph) then('Внимание! Произошла ошибка при построении графа фильтров');:=False;;;.Caption:='Идет запись';;TForm1.Button2Click(Sender: TObject);not(RecMode) then Exit;.Stop;:=False;FAILED(CreateGraph) then

ShowMessage('Внимание! Произошла ошибка при построении графа фильтров');

Exit;;.Caption:='Режим просмотра';;TForm1.Button3Click(Sender: TObject);: IAMStreamConfig;: ISpecifyPropertyPages;: CAUUID;RecMode then Exit;FVideoCaptureFilter = NIL then EXIT;.Stop;SUCCEEDED(FCaptureGraphBuilder.FindInterface(@PIN_CATEGORY_CAPTURE,

@MEDIATYPE_Video, FVideoCaptureFilter, IID_IAMStreamConfig, StreamConfig)) thenSUCCEEDED(StreamConfig.QueryInterface(ISpecifyPropertyPages, PropertyPages)) then.GetPages(Pages);:= NIL;(,

,

,(ListBox1.Items.Strings[listbox1.ItemIndex]),

,

@StreamConfig,.cElems,.pElems,

,

,

);:= NIL;(Pages.pElems);;;.Run;;;TForm1.DisplayPropertyFrame(Filter: IBaseFilter; Handle: THandle): HResult;: ISpecifyPropertyPages;: CAUUID;: TFilterInfo;: IUnknown;:= E_FAIL;Filter = NIL then EXIT;:= Filter.QueryInterface(ISpecifyPropertyPages, PropertyPages);(SUCCEEDED(Result)) then.QueryFilterInfo(FilterInfo);.QueryInterface(IUnknown, pfilterUnk);.GetPages(Pages);:= NIL;(,

,

,.achName,

,

@pfilterUnk,.cElems,.pElems,

,

,

);:= NIL;.pGraph := NIL;(Pages.pElems);;;TForm1.Button4Click(Sender: TObject);RecMode then Exit;(FVideoCaptureFilter, Handle);;TForm1.Button5Click(Sender: TObject);RecMode then Exit;(FAudioCaptureFilter, Handle);;TForm1.FormCreate(Sender: TObject);(nil);FAILED(Initializ) then

ShowMessage('Внимание! Произошла ошибка при инициализации');

Exit;;Listbox1.Count>0 thenFAILED(CreateGraph) then('Внимание! Произошла ошибка при построении графа фильтров');;;.Caption:='Режим просмотра'; else

Begin

ShowMessage('Внимание! Камера не обнаружена.');

End;

end;TForm1.FormDestroy(Sender: TObject);:= NIL;:= NIL;:= NIL;:= NIL;:=Unassigned;;;TForm1.ListBox1DblClick(Sender: TObject);ListBox1.Count=0 then('Камера не найдена');

Exit;

End;FAILED(CreateGraph) then('Внимание! Произошла ошибка при построении графа фильтров');

Exit;;.Caption:='Режим просмотра';;TForm1.ListBox2DblClick(Sender: TObject);ListBox1.Count>0 thenFAILED(CreateGraph) then('Внимание! Произошла ошибка при построении графа фильтров');;;.Caption:='Режим просмотра';else('Камера не выбрана');;;;TForm1.N1Click(Sender: TObject);;;TForm1.N2Click(Sender: TObject);(Handle, 'open', 'Справка користувача.pdf', nil, nil, SW_Restore);;.


Зміст Перелік скорочень, умовних позначень і термінів Вступ 1.Загальна частина 1.1 Постановка задачі 1.2 Опис предметної області .3 Характ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ