2013 09 24_video_imageanalysis_seminar_01

5,013 views
4,931 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,013
On SlideShare
0
From Embeds
0
Number of Embeds
4,779
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2013 09 24_video_imageanalysis_seminar_01

  1. 1. Анализ изображений и видео Семинар 1: Знакомство с OpenCV Наталья Васильева nvassilieva@hp.com HP Labs Russia 24 сентября 2013, Computer Science Center
  2. 2. 2 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. План семинара • Часть 1: обзорная • Обзор библиотеки OpenCV • Основные структуры данных OpenCV • Часть 2: практическая • Установка OpenCV • Решение задач
  3. 3. 3 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. OpenCV http://opencv.org Downloads: http://opencv.org/downloads.html How to install: http://opencv.org/quickstart.html Reference: http://docs.opencv.org/modules/refman.html Cheat sheet: http://docs.opencv.org/trunk/opencv_cheatsheet.pdf an open-source BSD-licensed library
  4. 4. 4 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Модули OpenCV • core – определение основных структур данных и функций • highgui – функции ввода/вывода, алгоритмы сжатия изображений/видео, видео-захват. • imgproc – алгоритмы обработки изображений: линейные и нелинейные фильтры, геометрические преобразования, преобразования моделей цвета, вычисление гистограмм,... • features2d – вычисление признаков, дескрипторов изображений, сравнение изображений • objdetect – распознавание объектов (faces, eyes, mugs, people, cars,...) • video – вычитание фона, алгоритмы слежения... • calib3d – стерео-реконструкция, калибровка камер, ... • gpu – реализации алгоритмов из различных модулей OpenCV с использованием графических процессоров • FLANN – приближенные алгоритмы поиска ближайших соседей • ...
  5. 5. 5 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Основные структуры данных Point_ - шаблон класса для представления точки в двумерном пространстве с координатами (x,y) typedef Point_<int> Point2i; typedef Point2i Point; typedef Point_<float> Point2f; typedef Point_<double> Point2d; Point3_ - шаблон класса для представления точки в трехмерном пространстве с координатами (x,y,z) Size_ - шаблон класса для представления размера изображения, прямоугольника. Атрибуты: weidth, height. Rect_ - шаблон класса для представления прямоугольника. Атрибуты: координаты левого верхнего угла (x,y) и размер (width, height)
  6. 6. 6 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Основные структуры данных: Mat Mat – represents an n-dimensional dense numerical single-channel or multi-channel array Важные атрибуты: cv::Mat::data cv::Mat::rows cv::Mat::cols cv::Mat::step addr(M_{ij})=M.data + M.step*i + j*M.elemSize() addr(M_{ij})=&M.at<float>(i,j)
  7. 7. 7 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Итерация элементов матрицы - 1 // compute sum of positive matrix elements // (assuming that M is double-precision matrix) double sum=0; for(int i = 0; i < M.rows; i++) { const double* Mi = M.ptr<double>(i); for(int j = 0; j < M.cols; j++) sum += std::max(Mi[j], 0.); }
  8. 8. 8 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Итерация элементов матрицы - 2 // compute sum of positive matrix elements, optimized variant double sum=0; int cols = M.cols, rows = M.rows; if(M.isContinuous()) { cols *= rows; rows = 1; } for(int i = 0; i < rows; i++) { const double* Mi = M.ptr<double>(i); for(int j = 0; j < cols; j++) sum += std::max(Mi[j], 0.); }

×