DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Лабораторна робота № 2 на тему: «Перехоплення програмою управління відеопотоком з відеокамери»

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра автоматизованих систем управління

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

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
Методи i засоби комп'ютерних інформаційних технологій
Група:
КН-1
Коротко про документ

Про що ця робота

У ході лабораторної роботи розроблено програму на Python для перехоплення відеопотоку з веб-камери за допомогою бібліотеки OpenCV. Програма здійснює збереження кадрів у форматі PNG та їх подальше перетворення у бінарний код.

У роботі розглядаються

  • Програмування на Python
  • Обробка відеопотоків
  • Бібліотека OpenCV
  • Робота з графічними файлами
  • Бінарне перетворення даних
  • Створення графічного інтерфейсу

Зміст і розділи

  1. Хід роботи
  2. Код програми
  3. Результат роботи програми
  4. Висновок
Для кого:Студенти технічних спеціальностей, викладачі та розробники, які вивчають методи обробки відеопотоків засобами Python.
Викладачі:Викладач кафедри АСУ

Ключові поняття

відеопотікOpenCVPythonвеб-камерабінарний кодзображенняTkinterпіксельінтерфейс

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Інститут ІКНІ Кафедра АСУ ЗВІТ До лабораторної роботи № 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 … Висновок При виконанні лабораторної роботи було розроблено програму для перехоплення управління відео потоком із камери і запису заздалегідь визначених кадрів у двійковому коді.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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