Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Інститут ІКНІКафедра АСУ
ЗВІТ
До лабораторної роботи № 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
…
Висновок
При виконанні лабораторної роботи було розроблено програму для перехоплення управління відео потоком із камери і запису заздалегідь визначених кадрів у двійковому коді.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!