Open CV (продолжение) ...

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

Модератор: Olej

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 17 июл 2018, 10:28

Olej писал(а):Проверяемся с версией установленного OpenCV (есть разные хосты, и будет ещё обновления):

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

[olej@xenix ~]$ python
Python 2.7.15 (default, May 15 2018, 15:37:31) 
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
>>> exit()
Ошибка сегментирования (стек памяти сброшен на диск)
Откуда и почему вываливается эта ошибка сегментирования нужно ещё выясняться...
После обновления системы ...

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

[olej@xenix ISO]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 28 (Twenty Eight)
Release:	28
Codename:	TwentyEight
... так чтобы к началу работы иметь обновлённую версию OpenCV, но не выходя (без нужды) за пределы репозиторной установки дистрибутива:

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

[olej@xenix ISO]$ python
Python 2.7.15 (default, May 16 2018, 17:50:09) 
[GCC 8.1.1 20180502 (Red Hat 8.1.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.1'
>>> exit()
Вот для этого и делал обновление.
P.S. И вываливаться после exit() перестал сразу! :lol:

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 17 июл 2018, 14:34

Olej писал(а): ... так чтобы к началу работы иметь обновлённую версию OpenCV, но не выходя (без нужды) за пределы репозиторной установки дистрибутива:

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

[olej@xenix ISO]$ python
Python 2.7.15 (default, May 16 2018, 17:50:09) 
[GCC 8.1.1 20180502 (Red Hat 8.1.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.1'
>>> exit()
Вот для этого и делал обновление.
Онлайн документация именно по этой версии OpenCV находится, например, здесь (и рядом): Open Source Computer Vision.
А поскольку меня интересует на этот раз (по секрету ;-) ) распознавание лиц, то это здесь: Face Recognition with OpenCV.

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 17 июл 2018, 14:41

Olej писал(а): Онлайн документация именно по этой версии OpenCV находится, например, здесь (и рядом): Open Source Computer Vision.
А поскольку меня интересует на этот раз (по секрету ;-) ) распознавание лиц, то это здесь: Face Recognition with OpenCV.
А Python-интерфейсы, что меня вдвойне интересует, здесь: OpenCV-Python Tutorials.

Но самая главная справка по Python - это локальная WEB-справка по установленным пакетам и версиям!:

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

[olej@xenix AplitSoft]$ pydoc -p 40000 &
[1] 13152
pydoc server ready at http://localhost:40000/
И дальше в браузере открываем вкладки по URL который выглядит так: http://localhost:40000/cv2.html (или так, если хотите: http://127.0.0.1:40000/cv2.html).
Вложения
pd.png

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 18 июл 2018, 19:34

Olej писал(а): Изображение
Кэлер, Брэдски: Изучаем OpenCV 3
SBN: 978-5-97060-471-7
826 страниц
март 2017
ДМК Пресс
Оригинал (англоязычный) книги свободно можно: здесь.
Перевод этой книги "с бабочкой" :-) можете свободно скачать здесь.
Я не знаю относительно какой версии OpenCV он ... но это и не имеет особого значения: для работы с OpenCV переводы не годятся, можно работать только со свежими оригиналами. А вот для 1-го беглого знакомства, для терминологии, уточнения форматов... - это годится независимо от версии.

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 17 авг 2018, 18:35

Активизировалась моя (IMHO) работа с OpenCV и компьютерным зрением, но главным образом, с переносом результатов на одноплатные ARM SBC.
Поэтому эта часть будет фиксироваться в новой теме: компьютерное зрение на одноплатных SBC.
Но одно не заменяет другое ... поэтому результаты по OpenCV будут рассыпаны ... здесь по 2-м темам + в новой теме.

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 21 авг 2018, 10:45

Событие и инсайдерская информация из области OpenCV, которую нельзя не отметить:
OpenCV 4 has not been officially released yet; however, a release is expected in autumn 2018. In the meantime, we can compile and install OpenCV 4 from source using the pre-release on GitHub.
OpenCV 4 includes more optimizations, C+11 support, more compact modules, and many improvements to the Deep Neural Network (DNN) module.
Это из инсайдерской рассылки одного из непосредственных активных участников на сегодня развития OpenCV.
И страничка с детальным пошаговым описанием как и откуда уже на сегодня каждый желающий может установить себе OpenCV 4: How to install OpenCV 4 on Ubuntu
by Adrian Rosebrock on August 15, 2018 in OpenCV 4, Tutorials
Здесь же о том, как создать виртуальные Python + OpenCV окружения для работы с разными версиями.

P.S.
Hello! I’m Adrian Rosebrock.
Изображение
I'm an entrepreneur and Ph.D who has launched two successful image search engines, ID My Pill and Chic Engine. I'm here to share my tips, tricks, and hacks I've learned along the way.

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 27 авг 2018, 20:26

Olej писал(а):И страничка с детальным пошаговым описанием как и откуда уже на сегодня каждый желающий может установить себе OpenCV 4:
Начну собирать OpenCV 4.
Но начну это делать (попробую), для начала, на микрокомпьютере Orange Pi One.
Поэтому и конспект этого процесса будет в другой теме: компьютерное зрение на одноплатных SBC

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 04 дек 2018, 00:21

Любопытные вещи выясняются ... относительно видеокамер и видеозахвата, без чего с зрением и OpenCV делать нечего...
Начну с видеокамер... Захват камеры и далее чтение происходит как-то так (Python):

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

cap = cv2.VideoCapture( dev )
ret, frame = cap.read()          
Вопрос: что должно быть в качестве dev?
Если это чтение из видеофайла, то это имя файла, если камера - номер (индекс) камеры.
Какой?
Вот одноплатный DragonBoard 410c с одной WEB USB камерой:

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

$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 Dec 14  2017 /dev/video0
crw-rw----+ 1 root video 81, 1 Dec 14  2017 /dev/video1
crw-rw----+ 1 root video 81, 2 Dec 14  2017 /dev/video2
Какая?
Здесь в дополнение есть CSI встраиваемый интерфейс камеры, который никуда не подключен.
А вот десктоп Fedora 28 с 2-мя WEB камерами:

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

$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 2 ноя  6 10:17 /dev/video2
crw-rw----+ 1 root video 81, 3 ноя  6 10:17 /dev/video3
crw-rw----+ 1 root video 81, 1 ноя  6 10:17 /dev/video1
crw-rw----+ 1 root video 81, 0 ноя  6 10:17 /dev/video0
Какие 2 из 4-х?
А вот те же 2 камеры на десктопе Mint 18.3:

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

$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 1 ноя  6 10:17 /dev/video1
crw-rw----+ 1 root video 81, 0 ноя  6 10:17 /dev/video0
Какие из них?

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 04 дек 2018, 00:25

Olej писал(а): А вот десктоп Fedora 28 с 2-мя WEB камерами:

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

$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 2 ноя  6 10:17 /dev/video2
crw-rw----+ 1 root video 81, 3 ноя  6 10:17 /dev/video3
crw-rw----+ 1 root video 81, 1 ноя  6 10:17 /dev/video1
crw-rw----+ 1 root video 81, 0 ноя  6 10:17 /dev/video0
Разбирательство с видеоподсистемой Linuix показало что:

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

[olej@xenix Face_recognition.8L]$ ls -l /dev/v4l/by-id
итого 0
lrwxrwxrwx 1 root root 12 ноя  6 10:17 usb-Generic_USB2.0_PC_CAMERA-video-index0 -> ../../video0
lrwxrwxrwx 1 root root 12 ноя  6 10:17 usb-Generic_USB2.0_PC_CAMERA-video-index1 -> ../../video1
lrwxrwxrwx 1 root root 12 ноя  6 10:17 usb-Sonix_Technology_Co.__Ltd._USB_2.0_Camera-video-index0 -> ../../video2
lrwxrwxrwx 1 root root 12 ноя  6 10:17 usb-Sonix_Technology_Co.__Ltd._USB_2.0_Camera-video-index1 -> ../../video3
Вот те имена, у которых index0 - это и есть индексы которые должны использоваться в cv2.VideoCapture() : 0 и 2

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

Re: Open CV (продолжение) ...

Непрочитанное сообщение Olej » 04 дек 2018, 01:12

Olej писал(а):Вот те имена, у которых index0 - это и есть индексы которые должны использоваться в cv2.VideoCapture() : 0 и 2
Код Python который даёт эти индексы, в разных дистрибутивах, и при любом количестве камер:

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

#!/usr/bin/python
# -*- coding: utf-8 -*- 
import subprocess
import sys, re

vd = []
proc = subprocess.Popen( [ 'ls', '-l', '/dev/v4l/by-id' ],
                  stdout=subprocess.PIPE, stderr=subprocess.PIPE )
stat = proc.wait()
if stat != 0:
    print( 'no video cameras!' )
    sys.exit( 0 )

z = proc.stdout.read().decode( "utf-8" ).splitlines()
for s in z:
    i = s.find( 'index' )
    if i < 0: continue         # not video line                      
    vv = s[ i: ].split( ' -> ' )
#    print( vv )
    if int( vv[ 0 ][ ( re.search( '\d', vv[ 0 ] ).start( 0 ) ): ] ) != 0:
        continue               # index not 0
    print( vv[ 0 ].strip(), ' | ', vv[ 1 ].strip( ' ./' ) )
    vd.append( int( vv[ 1 ][ ( re.search( '\d', vv[ 1 ] ).start( 0 ) ): ] ) )
print( 'cameras: {}'.format( vd ) )
Выполнение, это работает в разных версиях Python:

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

[olej@dell Face_recognition]$ python2 find_video.py
(u'index0', ' | ', u'video0')
cameras: [0]

[olej@dell Face_recognition]$ python3 find_video.py
index0  |  video0
cameras: [0]
Вложения
find_video.py
(828 байт) 135 скачиваний

Ответить

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

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

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