Перехоплення програмою управління відеопотоком з відеокамери

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
КН
Кафедра:
АСУ

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Проблемно-орієнтовані методи та засоби комп’ютерних інформаційних технологій

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Інститут ІКНІ Кафедра АСУ ЗВІТ До лабораторної роботи № 2 На тему: «Перехоплення програмою управління відеопотоком з відеокамери» З дисципліни: «Методи і засоби комп’ютерних інформаційних технологій» Львів – 2018 Хід роботи Код програми: import PIL.Image import numpy as np import cv2 import os from tkinter import * import time def FileWrite(value, id ): # функція для запису і перетворення числа f = open(str(id) + ".txt", "a") # відкриття файлу і добавлення нових записів в кінець f.write("\n") f.write("{0:08b}".format(value)) # форматування зовнішнього вигляду і запис def ImgToBin(id): # функція для перетворення зображення у бінарний код fp = open( "imgs/" + str(id) + ".png", "rb") # відкрити файл у бінарному вигляді для читання img = PIL.Image.open(fp) # створити об'єкт типу image і повернути дескриптор pixel = img.load() # перетворення і запис файлу у пам"ять i = 0 stime = time.time() # отримати час на даний момент while i < img.size[0]: # цикл для обходу всіх рядків j = 0 while j < img.size[1]: # цикл для обходу всіх стовпців FileWrite(pixel[i, j][0], id) # запис кольору у файл у бінарному вигляді FileWrite(pixel[i, j][1], id) FileWrite(pixel[i, j][2], id) j += 1 if(j > 10): break i += 1 if(i > 5): break print(" s ", time.time() - stime) # вивести час затрачений на виконання функції def all(event): camid = (int)(camIdGet.get()) # отримати ідентифікатор камери із поля для вводу period = (int)(shotCounter.get()) # отримати період для запису deltaTime = (float)(setTime.get()) # отримати час на виконання tmp = period i = 0 captured = 0 cap = cv2.VideoCapture(camid) # створення об'єкту типу VideoCapture stime = time.time() while abs(stime - time.time()) < deltaTime: # цикл виконуватиметься поки час виконання не буде більший за заданий ret, frame = cap.read() # зчитування зображення cv2.imshow('frame', frame) # показати зображення у окремому вікні cv2.waitKey(1) # пауза if (i == period ): cv2.imwrite(os.path.join("imgs", '%d.png') % captured, frame) # записати зображення як файл у форматі png captured += 1 period += tmp i += 1 cap.release() # видалити обєкт cv2.destroyAllWindows() # закрити всі вікна while captured != 0: ImgToBin(captured - 1) # перетворення зображень у бінарний код captured -= 1 root = Tk() # базове вікно l = Label(bg='black', fg='white', width=40, text = "cam id:") # мітка для виводу інформації camIdGet = Entry(width=20) # поле для зчитування L1 = Label(bg='black', fg='white', width=40, text = "Photo counter(every n):") shotCounter = Entry(width=20) L2 = Label(bg='black', fg='white', width=40, text = "End time(in seconds):") setTime = Entry(width=20) b = Button(text = " start ") # кнопка b.bind('<Button-1>', all) # привязування функіції до кнопки l.pack() #розміщення елементів на головному вікні послідовно camIdGet.pack() L1.pack() shotCounter.pack() L2.pack() setTime.pack() b.pack() root.mainloop() # створити головний цикл #set cam id; shot counter; time of capture Результат роботи програми: / 11010001 10110100 10010100 11001111 10110100 10011100 11001110 10110010 10100110 11001100 10101111 10101000 11011010 11000000 10110100 … Висновок При виконанні лабораторної роботи було розроблено програму для перехоплення управління відео потоком із камери і запису заздалегідь визначених кадрів у двійковому коді.
Антиботан аватар за замовчуванням

08.11.2018 17:11-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!