OpenCV и компьютерное зрение

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 21 окт 2016, 11:33

Возникла необходимость в OpenCV.
Сюда выложу материалы, оказавшиеся полезными в освоении, выложу сюда.

OpenCV
OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков. Может свободно использоваться в академических и коммерческих целях — распространяется в условиях лицензии BSD.
Основные модули
В версии 2.2 библиотека была реорганизована. Вместо универсальных модулей cxcore, cvaux, highGUI и других было создано несколько компактных модулей с более узкой специализацией:
opencv_core — основная функциональность. Включает в себя базовые структуры, вычисления (математические функции, генераторы случайных чисел) и линейную алгебру, DFT, DCT, ввод/вывод для XML и YAML и т. д.
opencv_imgproc — обработка изображений (фильтрация, геометрические преобразования, преобразование цветовых пространств и т. д.).
opencv_highgui — простой UI, ввод/вывод изображений и видео.
opencv_ml — модели машинного обучения (SVM, деревья решений, обучение со стимулированием и т. д.).
opencv_features2d — распознавание и описание плоских примитивов (SURF (англ.)русск., FAST и другие, включая специализированный фреймворк).
opencv_video — анализ движения и отслеживание объектов (оптический поток, шаблоны движения, устранение фона).
opencv_objdetect — обнаружение объектов на изображении (нахождение лиц с помощью алгоритма Виолы-Джонса (англ.), распознавание людей HOG и т. д.).
opencv_calib3d — калибровка камеры, поиск стерео-соответствия и элементы обработки трёхмерных данных.
opencv_flann — библиотека быстрого поиска ближайших соседей (FLANN 1.5) и обертки OpenCV.
opencv_contrib — сопутствующий код, ещё не готовый для применения.
opencv_legacy — устаревший код, сохранённый ради обратной совместимости.
opencv_gpu — ускорение некоторых функций OpenCV за счет CUDA, создан при поддержке NVidia.
Изображение
Лекция 4: Начало работы с библиотекой OpenCV

Изображение
OpenCV 2.4.13.1 documentation
OpenCV 3.1.0

Изображение
Буэно Г. Г., Обработка изображений с помощью Open CV, ДМК-Пресс, март 2016, 210 страниц, ISBN: 978-5-97060-387-1
http://www.books.ru/books/obrabotka-izo ... 89/?show=1
Изображение
Солем Я. Э., Программирование компьютерного зрения на Python, ДМК-Пресс, март 2016, 312 страниц, ISBN: 978-5-97060-200-3
http://www.books.ru/books/programmirova ... 95/?show=1
Я не знаю где свободно скачать эти книги ... пока.
Но обязательно узнаю! :lol:

OpenCV шаг за шагом.

1. Введение.
2. Установка. (установка OpenCV под OC Linux, установка 2.3.1 )
3. Hello World.
4. Загрузка картинки.
5. Вывод видео
6. Ползунок
7. Захват видео с камеры
8. Запись видео
9. События от мышки
10. Обработка изображения - сглаживание
11. Обработка изображения - изменение размеров
12. ROI - интересующая область изображения
13. Типы данных OpenCV
14. Матрица
15. Сохранение данных в XML
16. Генерация случайных чисел
17. Обработка изображения - морфологические преобразования
18. Обработка изображения - морфологические преобразования 2
19. Обработка изображения - заливка части изображения
20. Обработка изображения - альфа-смешивание
21. Обработка изображения - пороговое преобразование
22. Поиск объекта по цвету - RGB.
23. Поиск объекта по цвету. Цветовое пространство HSV.
24. Работа с камерой через библиотеку videoInput.
25. Обработка изображения - свёртка.
26. Обработка изображения — операторы Собеля и Лапласа
27. Обработка изображения — детектор границ Кенни (Canny)
28. Преобразование Хафа
29. Интегральное изображение
30. Трансформация изображения - аффинные преобразования, гомография
31. Типы данных OpenCV - хранилище памяти, последовательность
32. Нахождение контуров и операции с ними
33. Сравнение контуров через суммарные характеристики - моменты
Детектирование объектов - поиск объекта по шаблону (Template matching)
Александр Кручинин, Распознавание образов с использованием OpenCV.
Материалы блога http://recog.ru
Интересные статьи:
OpenCV
Контурный анализ - детектирование зашумленного бинарного объекта
Основы работы с матрицами в OpenCV (C++ интерфейс)
Детектирование объектов с помощью особенностей в OpenCV: FREAK. Детектирование множества объектов.
Изображение
Нахождение объектов на изображении с использованием особенностей
Обучение каскадного классификатора
Распознавание лиц в OpenCV (facerec_demo.cpp)
Детектирование объектов - поиск объекта по шаблону (Template matching)
Изображение

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 21 окт 2016, 11:37

Код: Выделить всё

[olej@dell openCV]$ sudo dnf install opencv-devel*
[sudo] пароль для olej: 
Fedora 23 - x86_64 - Test Updates                                                                         2.4 MB/s | 2.2 MB     00:00    
Последняя проверка окончания срока действия метаданных: 0:00:01 назад, Fri Oct 21 11:35:02 2016.
Зависимости разрешены.
==========================================================================================================================================
 Package                               Архитектура                Версия                                Репозиторий                 Размер
==========================================================================================================================================
Установка:
 opencv-devel                          x86_64                     2.4.12.3-1.fc23                       updates                     588 k
 opencv-devel-docs                     noarch                     2.4.12.3-1.fc23                       updates                     6.5 M

Результат операции
==========================================================================================================================================
Установка  2 Пакеты

Объем загрузки: 7.0 M
Объем изменений: 12 M
Продолжить? [д/Н]: y
Загрузка пакетов:
[MIRROR] opencv-devel-2.4.12.3-1.fc23.x86_64.rpm: Curl error (7): Couldn't connect to server for http://fedora.ip-connect.vn.ua/linux/updates/23/x86_64/o/opencv-devel-2.4.12.3-1.fc23.x86_64.rpm [Failed to connect to fedora.ip-connect.vn.ua port 80: В соединении отказано]
[MIRROR] opencv-devel-docs-2.4.12.3-1.fc23.noarch.rpm: Curl error (7): Couldn't connect to server for http://fedora.ip-connect.vn.ua/linux/updates/23/x86_64/o/opencv-devel-docs-2.4.12.3-1.fc23.noarch.rpm [Failed to connect to fedora.ip-connect.vn.ua port 80: В соединении отказано]
(1/2): opencv-devel-2.4.12.3-1.fc23.x86_64.rpm                                                            495 kB/s | 588 kB     00:01    
(2/2): opencv-devel-docs-2.4.12.3-1.fc23.noarch.rpm                                                       1.6 MB/s | 6.5 MB     00:04    
------------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                              1.4 MB/s | 7.0 MB     00:05     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : opencv-devel-2.4.12.3-1.fc23.x86_64                                                                                  1/2 
  Установка    : opencv-devel-docs-2.4.12.3-1.fc23.noarch                                                                             2/2 
  Проверка     : opencv-devel-2.4.12.3-1.fc23.x86_64                                                                                  1/2 
  Проверка     : opencv-devel-docs-2.4.12.3-1.fc23.noarch                                                                             2/2 

Установлено:
  opencv-devel.x86_64 2.4.12.3-1.fc23                               opencv-devel-docs.noarch 2.4.12.3-1.fc23                              

Выполнено!

Код: Выделить всё

[olej@dell openCV]$ dnf list opencv*
Последняя проверка окончания срока действия метаданных: 20 days, 20:50:44 назад, Fri Sep 30 14:45:42 2016.
Установленные пакеты
opencv.x86_64                                                        2.4.12.3-1.fc23                                              @updates
opencv-core.x86_64                                                   2.4.12.3-1.fc23                                              @updates
opencv-devel.x86_64                                                  2.4.12.3-1.fc23                                              @updates
opencv-devel-docs.noarch                                             2.4.12.3-1.fc23                                              @updates
opencv-python.x86_64                                                 2.4.12.3-1.fc23                                              @updates
Доступные пакеты
opencv.i686                                                          2.4.12.3-1.fc23                                              updates 
opencv-core.i686                                                     2.4.12.3-1.fc23                                              updates 
opencv-devel.i686                                                    2.4.12.3-1.fc23                                              updates 

Код: Выделить всё

[olej@dell include]$ ls /usr/include/opencv*
/usr/include/opencv:
cvaux.h  cvaux.hpp  cv.h  cv.hpp  cvwimage.h  cxcore.h  cxcore.hpp  cxeigen.hpp  cxmisc.h  highgui.h  ml.h

/usr/include/opencv2:
calib3d      core.hpp        flann.hpp    imgproc      ml.hpp         opencv.hpp          stitching      ts         videostab
calib3d.hpp  features2d      gpu          imgproc.hpp  objdetect      opencv_modules.hpp  stitching.hpp  ts.hpp     videostab.hpp
contrib      features2d.hpp  highgui      legacy       objdetect.hpp  photo               superres       video
core         flann           highgui.hpp  ml           ocl            photo.hpp           superres.hpp   video.hpp

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 21 окт 2016, 12:23

Проверяю то, что установилось - 1-й попавшийся на глаз тест на Python ... с некоторыми моими модификациями:

Код: Выделить всё

[olej@dell openCV]$ python --version
Python 2.7.11
Тестовый .jpg файл из установленных examples OpenCV:

Код: Выделить всё

[olej@dell triangle]$ sudo find / -name lena.jpg
[sudo] пароль для olej:
/usr/share/OpenCV/samples/c/lena.jpg
/usr/share/OpenCV/samples/cpp/lena.jpg
Копирую этот файл в рабочий каталог...
Тест first.py :

Код: Выделить всё

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys, cv2 as cv               # Импортируем модуль OpenCV (cv2) под именем cv 
img = cv.imread( sys.argv[ 1 ], 1 ) # Загружаем изображение 
cv.imshow( "original", img )        # Отрисовываем изображение 
gray = cv.cvtColor( img, cv.COLOR_BGR2GRAY )   # Конвертируем цветное изображение в монохромное 
gray = cv.GaussianBlur( gray, ( 7, 7 ), 1.5 )  # Добавляем размытие 
edges = cv.Canny( gray, 0, 50 )                # Запускаем детектор ребер 
cv.imshow( "edges", edges )         # Отображаем результат 
cv.waitKey()                        # Ожидаем нажатия любой клавиши для завершения работы  
Запуск:

Код: Выделить всё

[olej@dell openCV]$ chmod a+x first.py

Код: Выделить всё

[olej@dell openCV]$ ./first.py lena.jpg
...
l1.png
l2.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 21 окт 2016, 12:38

Olej писал(а):Проверяю то, что установилось
И то же самое для C/C++ ... пока это - первый попавшийся в wiki код с небольшими правками...
Здесь самая важная для меня проверка - это Makefile:

Код: Выделить всё

CFLAGS := `pkg-config --cflags opencv` $(CFLAGS)
CXXFLAGS := `pkg-config --cflags opencv` $(CXXFLAGS)
LDFLAGS := `pkg-config --libs opencv` $(LDFLAGS)

PROGRAMS := first

all: $(PROGRAMS)

clean:
        rm -f $(PROGRAMS)
В итоге:

Код: Выделить всё

[olej@dell openCV]$ make
g++ `pkg-config --cflags opencv`   `pkg-config --libs opencv`   first.cc   -o first

[olej@dell openCV]$ ls -l first
-rwxrwxr-x 1 olej olej 60552 окт 21 12:29 first
Вот теперь всё нормально, проверено... и можно приступать к содержательным тестам.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 23 окт 2016, 17:09

Olej писал(а): Сюда выложу материалы, оказавшиеся полезными в освоении, выложу сюда.
Продолжение...
(это всё англоязычные книги, которые можно скачать с торента по показанным ссылкам)

Изображение
OpenCV with Python Blueprints
Год издания: 2015
Автор: Michael Beyeler
Издательство: Packt Publishing
ISBN: 9781785282690
Язык: Английский
Формат: PDF/EPUB
Количество страниц: 230
Изображение
OpenCV By Example
Год издания: 2016
Автор: David Millan Escriva, Prateek Joshi, Vinicius Godoy
Издательство: Packt Publishing
ISBN: 9781785280948
Язык: Английский
Формат: PDF
Количество страниц: 296
Изображение
Learning Image Processing with OpenCV
Год: 2015
Автор: Gloria Bueno García, Oscar Deniz Suarez, José Luis Espinosa Aranda, Jesus Salido Tercero, Ismael Serrano Gracia, Noelia Vállez Enano
Издательство: Packt Publishing
ISBN: 9781783287659
Язык: Английский
Формат: PDF/ePub
Качество: Изначально компьютерное (eBook)
Интерактивное оглавление: Да
Количество страниц: 232
Это оригинал с которого издан показанные раньше русский перевод:
Изображение

Изображение
OpenCV Computer Vision with Python
Год: 2013
Автор: Joseph Howse
Жанр: Программирование
Издательство: Packt Publishing
ISBN: 9781782163923
Язык: Английский
Формат: PDF
Качество: Изначально компьютерное (eBook)
Интерактивное оглавление: Да
Количество страниц: 122

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 23 окт 2016, 22:34

Olej писал(а): Продолжение...
(это всё англоязычные книги, которые можно скачать с торента по показанным ссылкам)
Изображение
OpenCV 2 Computer Vision Application Programming Cookbook
Год: 2011
Автор: Robert Laganière
Жанр: Программирование
Издательство: Packt Publishing
ISBN: 978-1-849513-24-1
Язык: Английский
Формат: PDF
Качество: Изначально компьютерное (eBook)
Количество страниц: 298
Изображение
Learning OpenCV
Год выпуска: 2008
Автор: Dr. Gary Rost Bradski; Adrian Kaehler
Жанр: Алгоритмы графической обработки для систем машинного зрения
Издательство: O'Reilly Media, Inc.
ISBN: 978-0-596-51613-0
Формат: PDF
Качество: eBook (изначально компьютерное)
Количество страниц: 556

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 23 окт 2016, 22:46

И вот здесь можно посмотреть практически все вышедшие оригинальные книги по OpenCV (а заодно и их стоимости :lol: ):
Published books about OpenCV library:
Здесь 38 англоязычных книг + 4 японских.

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Lepton » 24 окт 2016, 11:51

Вот с бабочкой еще есть :lol:
Mastering OpenCV with Practical Computer Vision Projects
Mastering_OpenCV_with_Practical_Computer_Vision_Projects.jpg
-Год: 2012
-Автор: Daniel Lelis Baggio
-Жанр: Программирование
-Издательство: Packt Publishing
-ISBN-13: 978-1-84951-782-9
-Язык: Английский
-Формат: PDF
-Качество: Изначально компьютерное (eBook)
-Количество страниц: 284

Source-Code: https://github.com/MasteringOpenCV/code

Раз уж создали тему, вот здесь давал пример обнаружения объектов на изображении (OpenCV-Python)


и еще видео Оптическое распознавание символов с помощью OpenCV-Python

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Olej » 24 окт 2016, 12:40

Lepton писал(а): Раз уж создали тему, вот здесь давал пример обнаружения объектов на изображении (OpenCV-Python)
Интересно, но ... а). пример глухонемой (видео), б). код не очень понятный ... странно, в). негде взять файлы данных (.jpg, .xml) чтобы воспроизвести пример, а любые примеры в программировании представляют интерес (IMHO выработанное годами), только если их можно воспроизвести.

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Re: OpenCV и компьютерное зрение

Непрочитанное сообщение Lepton » 24 окт 2016, 15:32

Olej писал(а): негде взять файлы данных (.jpg, .xml) чтобы воспроизвести пример,.
Каскадный классификатор Хаара можно найти в сети (можно взять haarcascade_frontalface_default.xml здесь: http://alereimondo.no-ip.org/OpenCV/34). Ну а "картинок" в интернет полно :lol:

[detected.py]

Код: Выделить всё

#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import sys

scf = 1.30
scfact = 1.00

color = (0,0,255)
strokeWeight = 3

cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

cv2.namedWindow('Frontal Face',cv2.WINDOW_NORMAL)

if len(sys.argv) != 2:
    print "No input image given. Correct Usage : python CensorBreast.py <filename> \n"
    raise SystemExit(1)

filename = sys.argv[1]

def nothing(*argv):
    pass

def trackbar():
    global scfact
    r = cv2.getTrackbarPos('FaceDet','Frontal Face')
    scfact = 1.07+0.01*r
    return scfact

def update():
    img = cv2.imread(filename)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    rects = cascade.detectMultiScale(gray, scfact, 2)

    for (x,y,w,h) in rects:
        cv2.rectangle(img, (x,y), (x+w,y+h), color, -1)
        cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), strokeWeight)

    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,'ScaleFactor:'+str(scfact),(10,30), font, 1,(255,0,0),2,cv2.LINE_AA)

    cv2.imshow('Frontal Face',img)

cv2.createTrackbar('FaceDet','Frontal Face',0,50,nothing)

while (1):
    k = cv2.waitKey(25) & 0xFF
    if k == 27:
        break

    trackbar()

    if scf == scfact:
        pass
    else:
       update()
       scf = scfact
cv2.destroyAllWindows()

Код: Выделить всё

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.0.0-beta'

$ python detected.py bin.jpg
face_detect.png
P/S haarcascade_breast.xml в сети не найдете, т.к. обучение этого классификатора делалось на заказ.
Вложения
face_detected.tar
(1.33 МБ) 200 скачиваний

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей