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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    760,29 Кб
  • Опубликовано:
    2013-07-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Зміст

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

Вступ

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

Тип BIOS

X55A.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 проектів та багато іншого);

·        Зміни в 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 дає змогу швидко, практично, зрозуміло та якісно зробити певну програму або інший об’єкт для взаємодії з користувачем. Вся справа створення об’єкту дуже легка і не потребує велику кількість часу. Тому ця мова програмування являється однією з перших, яку має вивчити програміст на початковій стадії свого життєвого шляху.

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

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

.        Википедия - свободная энциклопедия: [Електрон. ресурс]. - Режим доступу: http://www.wikipedia.org

3.      Документація Rad Studio XE3.

 

Додаток


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

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

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!