Разработка приложения с использованием библиотеки OpenCV
Обзор различных сфер применения компьютерного зрения. Работа с потоком видео. Особенности построения приложений на языке C++. Доступные функции библиотеки OpenCV для детектирования объектов. Захват видео с камеры. Алгоритм детектирования 4-х точек.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В результате проделанной работы было разработано приложение с использованием библиотеки OpenCV, ориентированной на работу с компьютерным зрением.
Для достижения поставленной цели были решены следующие задачи:
• Исследована сфера применения компьютерного зрения;
• Получены навыки владения языком C++;
• Разработано приложение с использованием библиотеки OpenCV;
• Проведен анализ разработанного приложения.
Использование в разработке программы библиотеки OpenCV позволило использовать некоторые готовые решения для работы с видеопоследовательностью, а так же для определения объекта на ней. Учитывая, что работа была выполнена на несложных объектах, требуется дальнейшее работа с детектированием более сложных объектов, а так же реализация его в последующей версии программы.
Список использованных источников
1. Шилдт Г. C++. Базовый курс [Текст]/ Шилдт Г. М.: «Вильямс», 2008. - 624 с.
2. Щупак Ю. C/C++. Структурное и объектно-ориентированное программирование: практикум [Текст]/ Щупак Ю., Павловская Т. - СПб.: «Питер», 2010. - 436 с.
3. Bradski G. Learning OpenCV: Computer Vision with the OpenCV Library Текст Bradski G., Kaehler A. - «O'Reilly Media», 2008. - 123 с.
4. Рао С. Освой самостоятельно C++ за 21 день[Текст]/ М.: «Вильямс», 2015. - 699 с.
5. Подбельский В.В. Язык C++. Учебное пособие [Текст] / В.В. Подбельский - Москва: Финансы и статистика, 1994 - 560с.
6. Седжвик Р. Алгоритмы на C++ [Текст]/ Седжвик Р. М.: «Вильямс», 2011. - 1056 с.
7. Литвиненко Н. А. - Технология программирования на С++ [Текст]/ Гуревич С -М.: БХВ-Петербург, 2010. - 281 с.
8. Ирэ Пол. Объектно-ориентированное программирование с использованием C++ / Пол. Ирэ; пер. с англ. - Киев: НИИПФ ДиаСофт Лтд, 1996 - 480с.
9. Форсайт Д. Компьютерное зрение. Современный подход / Форсайт Д., Понс Ж. // М: Издательский дом" Вильямс. - 2004. 314с.
10. Грузман И.С. Цифровая обработка изображений в информационных системах: Учебное пособие / И.С. Грузман, В.С. Киричук, В.П. Косых и др. - Новосибирск: Изд-во НГТУ, 2002. - 352 c.
Приложение А
Программный код
import cv2
importnumpy as np
cap = cv2.VideoCapture("vtest.avi")
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
hsv = np.zeros_like(frame1)
hsv[...,1] = 255
while(1):
ret, frame2 = cap.read()
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
hsv[...,0] = ang*180/np.pi/2
hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow('frame2',bgr)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
elif k == ord('s'):
cv2.imwrite('opticalfb.png',frame2)
cv2.imwrite('opticalhsv.png',bgr)
prvs = next
cap.release()
cv2.destroyAllWindows()
importnumpyasnp
Продолжение приложения А
import cv2
cap = cv2.VideoCapture('slow.flv')
# params for ShiTomasi corner detection
feature_params = dict(maxCorners = 100,
qualityLevel = 0.3,
minDistance = 7,
blockSize = 7 )
# Parameters for lucaskanade optical flow
lk_params = dict(winSize = (15,15),
maxLevel = 2,
criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))
# Create some random colors
color = np.random.randint(0,255,(100,3))
# Take first frame and find corners in it
ret, old_frame = cap.read()
old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY)
p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
# Create a mask image for drawing purposes
mask = np.zeros_like(old_frame)
while(1):
ret,frame = cap.read()
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# calculate optical flow
p1, st, err = cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_params)
# Select good points good_new = p1[st==1]
good_old = p0[st==1]
# draw the tracks
fori,(new,old) in enumerate(zip(good_new,good_old)):
a,b = new.ravel()
c,d = old.ravel()
mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)
frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1)
img = cv2.add(frame,mask)
cv2.imshow('frame',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
# Now update the previous frame and previous points
old_gray = frame_gray.copy()
p0 = good_new.reshape(-1,1,2)
cv2.destroyAllWindows()
cap.release()
importnumpy as np
import cv2
cap = cv2.VideoCapture('slow.flv')
# params for ShiTomasi corner detection
feature_params = dict(maxCorners = 100,
qualityLevel = 0.3,
minDistance = 7,
blockSize = 7 )
# Parameters for lucaskanade optical flow
maxLevel = 2,
criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))
# Create some random colors
color = np.random.randint(0,255,(100,3))
# Take first frame and find corners in it
ret, old_frame = cap.read()
old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY)
p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
# Create a mask image for drawing purposes
mask = np.zeros_like(old_frame)
while(1):
ret,frame = cap.read()
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# calculate optical flow
p1, st, err = cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_params)
# Select good points
good_new = p1[st==1]
good_old = p0[st==1]
# draw the tracks
fori,(new,old) in enumerate(zip(good_new,good_old)):
a,b = new.ravel()
c,d = old.ravel()
mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)
frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1)
img = cv2.add(frame,mask)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
# Now update the previous frame and previous points
old_gray = frame_gray.copy()
p0 = good_new.reshape(-1,1,2)
cv2.destroyAllWindows()
cap.release()
Приложение Б
Презентационный материал
Размещено на Allbest.ur
...Подобные документы
Анализ основных аспектов технологии компьютерного зрения, необходимых для выполнения работы. Изучение характеристик библиотеки OpenCV, оценка актуальности работы по распознаванию жестов рук. Поэтапный отчет о работе над программным обеспечением.
курсовая работа [669,9 K], добавлен 20.05.2017Метод главных компонент. Процесс распознавания. Ковариационная матрица, диагональная матрица собственных чисел. Использовании метрики Махаланобиса и Гауссовского распределения для оценки близости изображений. Входные вектора. Библиотека OpenCV.
статья [22,1 K], добавлен 29.09.2008OpenCV – библиотека компьютерного зрения с открытым исходным кодом, предоставляющая набор типов данных, функций и численных алгоритмов для обработки изображений. Ее реализация на C/C++. Цели использования технологии. Основные модули библиотек 1-3.
презентация [121,8 K], добавлен 14.12.2013Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.
курсовая работа [616,4 K], добавлен 18.10.2010Обзор рекламного ролика Vodafone "Bubbles". Слежение за точками и плоскостью в двухмерном трекинге. Трехмерный трекинг: захват движения и системы, основанные на принципе фотограмметрии. Методика создания ролика в условиях малобюджетной видео-студии.
дипломная работа [8,6 M], добавлен 25.01.2012Система помощи водителю на базе регистратора. Установка операционной системы Debian. Настройка системных служб и разработка серверного приложения. Создание локальной Wi-Fi сети. Распознавание знаков и библиотека OpenCV. Потоковое видео в Android.
дипломная работа [3,9 M], добавлен 13.09.2017Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.
курсовая работа [563,2 K], добавлен 21.06.2011Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.
курсовая работа [348,1 K], добавлен 02.07.2011Теоретические основы написания Windows-приложений с использованием библиотеки MFC. Основы программирования под Windows. Проектирование приложений в среде Microsoft Visual C++. Описание логической структуры приложения, его функциональное назначение.
курсовая работа [1,3 M], добавлен 12.12.2011Особенности разработки и представления проекта программы, представляющей собой аналоговые часы с циферблатом, часовой, минутной и секундной стрелкой. Применение MS Visual Studio 2010, языка С++ для ее написания и компилирования. Специфика библиотеки MFC.
курсовая работа [440,2 K], добавлен 17.03.2014Анализ существующих проблем и обзор библиотеки обработки изображений и алгоритмов общего назначения OpenCV. Особенности разработки и детальный анализ требований к программе. Основная логика ее работы и реализация. Трекинг лица и объекта по цвету.
дипломная работа [1,3 M], добавлен 26.06.2017Форматы и характеристики цифрового видео: частота кадра, экранное разрешение, глубина цвета, качество изображения. Типовый технологический процесс производства видеокомпонентов для мультимедиа продуктов с использованием программы miroVIDEO Capture.
лекция [2,7 M], добавлен 30.04.2009Разработка программы на платформе Microsoft Vusial С#, реализующая ряд задач: реализация движения 3D-модели и освещения сцены, изменение вида камеры с третьего на первый и обратно при помощи клавиатуры, запись работы с моделью в видео файл фомата *.avi.
курсовая работа [407,9 K], добавлен 07.07.2012Разработка трехмерной модели приложения "Гоночный автомобиль" на языке С++ с использованием библиотеки OpenGL и MFC, создание программы в среде Visual Studio 6.0. Информационное обеспечение, логическая структура и функциональная декомпозиция проекта.
курсовая работа [3,9 M], добавлен 29.06.2011Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трехмерной сцены и интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.
курсовая работа [1,1 M], добавлен 23.06.2011Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.
курсовая работа [27,4 K], добавлен 07.08.2007Программирование с использованием библиотеки ОреnGl: возможности, работа с матрицами, синтаксист команд, освещение, спецификация материалов, создание эффекта тумана. Разработка визуализации трехмерной сцены. Информационное и программное обеспечение.
курсовая работа [39,2 K], добавлен 23.06.2011Создание титров с использованием видео-редактора Sony Vegas Pro 10.0 и графического редактора. Придание способности двигаться и видимости жизни объектам. Анимация в среде 3D Studio Max 2010. Воспроизведение визуализированной последовательности кадров.
курсовая работа [2,0 M], добавлен 17.01.2013Искусственная нейронная сеть - математическая модель, представляющая собой систему соединённых, взаимодействующих между собой нейронов. Методы детектирования движения в видеопотоке. Обзор инструментальных средств для разработки программного продукта.
дипломная работа [2,0 M], добавлен 06.06.2017Порядок разработки информационной системы "Архив online-видео" для скачивания и добавления файлов, его структура и основные компоненты. Методика регистрации на сайте, просмотра, добавления и скачивания видео. Программирование администрирования сайта.
курсовая работа [1,9 M], добавлен 04.06.2009