LINUX.ORG.RU

10
Всего сообщений: 82

Как заставить работать OpenCV DNN на Vulkan?

Привет всем!

Ковыряюсь с OpenCV и моделями Caffe. Пытаюсь ускорить это дело, т.к. средствами процессора скорость получается очень печальной.
К своему сожалению выяснил, что OpenCL, похоже пролетает. Встроенный GPU от Intel HD Graphics 4600 не поддерживается проприетарным драйвером Intel, на свободном beignet тоже какое-то шаманство и не собирается ядро. Есть отдельная видеокарта AMD R9 270x, и на ней шаманство с драйверами и поддержкой OpenCL. AMDGPU-Pro официально её не поддерживает. Включить можно опцией при загрузке. Старый Blender (2.78) даже что-то рендерит в Cycles, но при запуске OpenCV опять не собирается ругается так:

Status -11: CL_BUILD_PROGRAM_FAILURE
-DT=float -Dconvert_T=convert_float -DRELU_NO_SLOPE -D AMD_DEVICE
Остаётся попробовать Vulkan, вроде у меня он работает, vulkan-smoketest чайники рисует. Но как его вообще включить?
cv2.dnn_Net.setPreferableBackend(net, cv2.dnn.DNN_BACKEND_VKCOM)
cv2.dnn_Net.setPreferableTarget(net, cv2.dnn.DNN_TARGET_VULKAN)
- не приводит ни к чему. OpenCV просто молча использует процессор. Куда копать?
opencv-contrib-python - 4.0.0.21
python - 3.6.6

 , , , ,

ls-h ()

Archlinux поддержка нескольких версий библиотек

Доброго времени суток,

С появления ROS версии Melodic появилась поддержка AUR пакетов для Archlinux-а, что не может не радовать. Но очевидная проблема совместимости поставки версионного middleware и rolling release хостовой ОС дает о себе знать. В целом, сейчас собрать пакет не получится сходу, нужно обходить проблемы. На всякий случай, если кто этим занимается, то первая проблема, связанная с множеством пакетов-тулзов из-за неверной генерации *Config.cmake с -lpthread вместо pthread, судя по всему, является косяком новой 3.13й версии cmake и рекомендуется откатиться на версию раньше — мне помогло.

Вторая проблема, это требование пакета 3й версии opencv, а в Arch-е она уже 4я и давненько. Вариант править проверку зависимости, очевидно плохой: кто знает как могло помяняться API, а как еще поменяется потом? Тогда вариант ставить вручную из сырцов opencv 3.4.1, что я и сделал. Но суть-то AUR пакета: поставил в pikaur -S и уходишь заниматься делами. На ум приходит вариант опакетить в AUR это дела в виде ros-melodic-opencv3, по такому же принципу, как это делали lunar и kinetic, а мейнтейнера других пакетов попросить включить мой. cv3 и cv4 в системе лежат в разных директориях и не отсвечивают друг на друга, значит, теоретически, ничто не мешает им лежать рядом, а при линковке явно указывать версию.

Собственно, после длинной прилюдии вопрос: правильно ли я рассуждаю или стоит сделать как-то по-другому?

 , ,

JAkutenshi ()

А что есть поточнее чем OpenCV

В плане распознавания лиц. Уж больно много погрешностей дает OpenCV

 

Siado ()

RTSP и OpenCV

Не удается запустить в питоноскрипте картинку через RTSP

Дистрибутив Fedora 28, opencv_version 3.4.1, python 3.6

Подрубаю RTSP-поток так:

cam = cv2.CascadeClassifier("rtsp://admin:888888@192.168.1.40:10544/udp/av0_0")

По урлке ip-видеокамеры. Эта же урл без проблем открывается в VLC

Вылетает ошибка:

VIDEOIO ERROR: V4L: device rtsp://admin:888888@192.168.1.40:10544/udp/av0_0: Unable to query number of channels
OpenCV(3.4.1) Error: Unspecified error (GStreamer: unable to start pipeline
) in cvCaptureFromCAM_GStreamer, file /builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp, line 890
VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)): raised OpenCV exception:

OpenCV(3.4.1) /builddir/build/BUILD/opencv-3.4.1/modules/videoio/src/cap_gstreamer.cpp:890: error: (-2) GStreamer: unable to start pipeline
 in function cvCaptureFromCAM_GStreamer

CvCapture_OpenNI::CvCapture_OpenNI : Failed to open input file (rtsp://admin:888888@192.168.1.40:10544/udp/av0_0): Bad file extension
OpenCV(3.4.1) Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /builddir/build/BUILD/opencv-3.4.1/modules/imgproc/src/color.cpp, line 11147
Traceback (most recent call last):
  File "/mnt/Test/pyface/recognizer.py", line 13, in <module>
    gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(3.4.1) /builddir/build/BUILD/opencv-3.4.1/modules/imgproc/src/color.cpp:11147: error: (-215) scn == 3 || scn == 4 in function cvtColor


Process finished with exit code 1

Особенно смущает «Failed to open input file». Может я как-то не так rtsp-строку ввожу?

Версия OpenCV доступная из Python3 собрана так:

python3 -c "import cv2; print(cv2.getBuildInformation())"

General configuration for OpenCV 3.4.1 =====================================
  Version control:               unknown

  Extra modules:
    Location (extra):            /builddir/build/BUILD/opencv-3.4.1/opencv_contrib-3.4.1/modules
    Version control (extra):     unknown

  Platform:
    Timestamp:                   2018-04-16T03:01:29Z
    Host:                        Linux 4.15.3-300.fc27.x86_64 x86_64
    CMake:                       3.11.0
    CMake generator:             Unix Makefiles
    CMake build tool:            /usr/bin/gmake
    Configuration:               ReleaseWithDebInfo

  CPU/HW features:
    Baseline:                    SSE SSE2 SSE3
      requested:                 SSE3
    Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
      requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
      SSE4_1 (3 files):          + SSSE3 SSE4_1
      SSE4_2 (1 files):          + SSSE3 SSE4_1 POPCNT SSE4_2
      FP16 (2 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
      AVX (4 files):             + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
      AVX2 (8 files):            + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
      AVX512_SKX (0 files):      + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_SKX

  C/C++:
    Built as dynamic libs?:      YES
    C++11:                       YES
    C++ Compiler:                /usr/bin/c++  (ver 8.0.1)
    C++ flags (Release):         -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wl,--as-needed   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wno-implicit-fallthrough -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -DNDEBUG  -DNDEBUG
    C++ flags (Debug):           -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wl,--as-needed   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -Wno-implicit-fallthrough -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -g  -DDEBUG -D_DEBUG
    C Compiler:                  /usr/bin/cc
    C flags (Release):           -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wl,--as-needed   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wno-implicit-fallthrough -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fopenmp -DNDEBUG  -DNDEBUG
    C flags (Debug):             -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wl,--as-needed   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-narrowing -Wno-comment -Wno-implicit-fallthrough -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fopenmp -g  -DDEBUG -D_DEBUG
    Linker flags (Release):      -Wl,-z,relro  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld   
    Linker flags (Debug):        -Wl,-z,relro  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld   
    ccache:                      NO
    Precompiled headers:         NO
    Extra dependencies:          dl pthread rt /lib64/libGL.so /lib64/libGLU.so /lib64/libtbb.so ClpSolver Clp CoinUtils bz2 z m
    3rdparty dependencies:

  OpenCV modules:
    To be built:                 aruco bgsegm bioinspired calib3d ccalib core cvv datasets dpm face features2d flann freetype fuzzy hdf hfs highgui img_hash imgcodecs imgproc java_bindings_generator line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 python_bindings_generator reg rgbd saliency shape stereo stitching structured_light superres surface_matching tracking ts video videoio videostab ximgproc xobjdetect xphoto
    Disabled:                    js world
    Disabled by dependency:      dnn_objdetect sfm text
    Unavailable:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java matlab ovis viz
    Applications:                tests perf_tests examples apps
    Documentation:               doxygen python
    Non-free algorithms:         NO

  GUI: 
    QT:                          YES (ver 5.10.1)
      QT OpenGL support:         YES (Qt5::OpenGL 5.10.1)
    GTK+:                        NO
    OpenGL support:              YES (/lib64/libGL.so /lib64/libGLU.so)
    VTK support:                 NO

  Media I/O: 
    ZLib:                        /lib64/libz.so (ver 1.2.11)
    JPEG:                        /lib64/libjpeg.so (ver )
    WEBP:                        /lib64/libwebp.so (ver encoder: 0x020e)
    PNG:                         /lib64/libpng.so (ver 1.6.34)
    TIFF:                        /lib64/libtiff.so (ver 42 / 4.0.9)
    JPEG 2000:                   /lib64/libjasper.so (ver 2.0.14)
    OpenEXR:                     /lib64/libImath.so /lib64/libIlmImf.so /lib64/libIex.so /lib64/libHalf.so /lib64/libIlmThread.so (ver 2.2.0)
    GDAL:                        YES (/lib64/libgdal.so)
    GDCM:                        YES (ver 2.8.4)

  Video I/O:
    DC1394:                      YES (ver 2.2.2)
    GStreamer:                   
      base:                      YES (ver 1.14.0)
      video:                     YES (ver 1.14.0)
      app:                       YES (ver 1.14.0)
      riff:                      YES (ver 1.14.0)
      pbutils:                   YES (ver 1.14.0)
    OpenNI:                      YES (ver 1.5.7, build 10)
    OpenNI PrimeSensor Modules:  YES (/lib64/libXnCore.so)
    UniCap:                      YES (ver 0.9.12)
    UniCap ucil:                 YES (ver 0.9.10)
    libv4l/libv4l2:              1.12.5 / 1.12.5
    v4l/v4l2:                    linux/videodev2.h
    Intel Media SDK:             NO
    gPhoto2:                     YES

  Parallel framework:            TBB (ver 2018.0 interface 10002)

  Trace:                         YES (built-in)

  Other third-party libraries:
    VA:                          YES
    Lapack:                      YES (/lib64/libopenblas.so)
    Eigen:                       YES (ver 3.3.4)
    Custom HAL:                  NO
    Protobuf:                    /lib64/libprotobuf.so (3.5.0)

  NVIDIA CUDA:                   NO

  OpenCL:                        YES (no extra features)
    Include path:                /builddir/build/BUILD/opencv-3.4.1/3rdparty/include/opencl/1.2
    Link libraries:              Dynamic load

  Python 2:
    Interpreter:                 /usr/bin/python2.7 (ver 2.7.14)
    Libraries:                   /lib64/libpython2.7.so (ver 2.7.14)
    numpy:                       /usr/lib64/python2.7/site-packages/numpy/core/include (ver 1.14.1)
    packages path:               lib64/python2.7/site-packages

  Python 3:
    Interpreter:                 /usr/bin/python3 (ver 3.6.5)
    Libraries:                   /lib64/libpython3.6m.so (ver 3.6.5)
    numpy:                       /usr/lib64/python3.6/site-packages/numpy/core/include (ver 1.14.1)
    packages path:               lib64/python3.6/site-packages

  Python (for build):            /usr/bin/python2.7
    Pylint:                      /usr/bin/pylint (ver: 1.7.5, checks: 116)

  Java:                          
    ant:                         NO
    JNI:                         NO
    Java wrappers:               NO
    Java tests:                  NO

  Matlab:                        NO

  Install to:                    /usr
-----------------------------------------------------------------

GStreamer плагины установлены. Что ему не хватает?

 ,

Siado ()

Ошибка при установке opencv2-opt

Пытаюсь установить timedoctorpro из AUR, для него необходимо opencv2-opt. Но при билде получаю ошибку:

[ 10%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o
In file included from /tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg.cpp:45:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘AVStream* icv_add_video_stream_FFMPEG(AVFormatContext*, AVCodecID, int, int, int, double, int)’:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1484:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
         c->flags |= CODEC_FLAG_GLOBAL_HEADER;
                     ^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1484:21: note: suggested alternative: ‘AV_CODEC_FLAG_GLOBAL_HEADER’
         c->flags |= CODEC_FLAG_GLOBAL_HEADER;
                     ^~~~~~~~~~~~~~~~~~~~~~~~
                     AV_CODEC_FLAG_GLOBAL_HEADER
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘int icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, uint8_t*, uint32_t, AVFrame*)’:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1512:30: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
     if (oc->oformat->flags & AVFMT_RAWPICTURE) {
                              ^~~~~~~~~~~~~~~~
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1512:30: note: suggested alternative: ‘AVFMT_NOFILE’
     if (oc->oformat->flags & AVFMT_RAWPICTURE) {
                              ^~~~~~~~~~~~~~~~
                              AVFMT_NOFILE
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvVideoWriter_FFMPEG::close()’:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1686:35: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
         if( (oc->oformat->flags & AVFMT_RAWPICTURE) == 0 )
                                   ^~~~~~~~~~~~~~~~
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1686:35: note: suggested alternative: ‘AVFMT_NOFILE’
         if( (oc->oformat->flags & AVFMT_RAWPICTURE) == 0 )
                                   ^~~~~~~~~~~~~~~~
                                   AVFMT_NOFILE
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1920:32: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
     if (!(oc->oformat->flags & AVFMT_RAWPICTURE)) {
                                ^~~~~~~~~~~~~~~~
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1920:32: note: suggested alternative: ‘AVFMT_NOFILE’
     if (!(oc->oformat->flags & AVFMT_RAWPICTURE)) {
                                ^~~~~~~~~~~~~~~~
                                AVFMT_NOFILE
In file included from /tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg.cpp:45:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In static member function ‘static AVStream* OutputMediaStream_FFMPEG::addVideoStream(AVFormatContext*, AVCodecID, int, int, int, double, AVPixelFormat)’:
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:2214:25: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
             c->flags |= CODEC_FLAG_GLOBAL_HEADER;
                         ^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/yaourt-tmp-wenti/aur-opencv2-opt/src/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:2214:25: note: suggested alternative: ‘AV_CODEC_FLAG_GLOBAL_HEADER’
             c->flags |= CODEC_FLAG_GLOBAL_HEADER;
                         ^~~~~~~~~~~~~~~~~~~~~~~~
                         AV_CODEC_FLAG_GLOBAL_HEADER
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:180: modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1211: modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

Как это можно исправить?

 ,

Wenti ()

Не компилируется программа opencv на Debian Buster

Выход в терминале:

g++ -I/usr/local/include/opencv -L/usr/local/lib -o test test.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui
test.cpp:1:10: fatal error: cv.h: Нет такого файла или каталога
#include <cv.h>
^~~~~~
compilation terminated.
Makefile:11: ошибка выполнения рецепта для цели «test»
make: *** [test] Ошибка 1

Makefile:

CC := g++
CFLAGS := -I/usr/local/include/opencv -L/usr/local/lib
OBJECTS :=
LIBRARIES := -lopencv_core -lopencv_imgproc ->lopencv_highgui

.PHONY: all clean

all: test

test:
$(CC) $(CFLAGS) -o test test.cpp $(LIBRARIES)

clean:
rm -f *.o

Сама программа (брал с робокрафта):

#include <cv.h>
#include <highgui.h>

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
IplImage* image=0, *dst=0;

// имя картинки
char filename[] = «after_rain.jpg»;

// получаем картинку
image = cvLoadImage(filename, 1);

printf(" image: %s\n", filename);
assert( image != 0 );

// покажем изображение
cvNamedWindow( «image»);
cvShowImage( «image», image );

// ждём нажатия клавиши
cvWaitKey(0);

// освобождаем ресурсы
cvReleaseImage(& image);
cvReleaseImage(&dst);

// удаляем окна
cvDestroyAllWindows();
return 0;
}

 

mrdesmondmiles ()

page-dewarp: The 'cv2' distribution was not found. Как исправить?

Пытаюсь воспользоваться https://github.com/mzucker/page_dewarp

$ python3
Python 3.6.5 (default, Mar 29 2018, 18:20:46) 
[GCC 8.0.1 20180317 (Red Hat 8.0.1-0.19)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print (cv2.__version__)
3.4.1
>>>
$ page_dewarp notesB2.jpg
Traceback (most recent call last):
  File "/usr/bin/page_dewarp", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3088, in <module>
    @_call_aside
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3072, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3101, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 574, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 892, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 778, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'cv2' distribution was not found and is required by page-dewarp

Что не так?

Собрал с таким setup.py:

#!/usr/bin/env python3
from __future__ import print_function

import os
import sys
from setuptools import setup


setup(
    name="page_dewarp",
    version="0.0.1",
    author="Matt Zucker",
    description="Page dewarping and thresholding using a cubic sheet model",
    url="https://github.com/mzucker/page_dewarp",
    py_modules=["page_dewarp"],
    install_requires=[
        "numpy>=1.1.0",
        "scipy",
        "pillow",
        "cv2",
    ],
    entry_points="""
        [console_scripts]
        page_dewarp=page_dewarp:main
    """,
)

 ,

nvl ()

Двигать окна глазами (не совсем)

Хочу фичу, суть такая. Ставится вебка, ищет мои глаза, по положению зрачков вычисляет на какой монитор я смотрю. Далее приделывается кнопка/пункт меню к окну / хоткей, к нему скрипт, который перемещает окно на нужный монитор. Для меня самая сложная задача - обработка изображения с вебки. Есть какие-нибудь идеи или [полу]готовые решения?

 ,

crutch_master ()

Раздвоение личности std::string под minGW (сборка openCV)

Собственно openCV в итоге собрать удалось, но вот дальше началось непонятное. При сборке тестового проекта (стандартная шняга с открытием картинки) вылетает куча undefined reference. Опытным путём было обнаружено, что у всех функций, которые параметром имеют std::string (алиас cv::String) не совпадает сигнатура и линкёр их не видит. Поиск навёл на подобную проблему со сборкой под мак clang-ом. Там, вроде как, 2 версии разных библиотек с реализацийе std::*, причём сигнатуры как раз совпадают с моими. Вот только никакой информации о подобном раздвоении у minGW не нашлось. При сборке openCV, вроде, никаких подозрительных флагов не нашел и почему такая разница - непонятно. Может кто в курсе, где копать?

 

TripleGluk ()

Запись видео в OpenCV под Linux: не работает VideoWriter::write()

Спрашиваю у тех, кто в теме. Интернет завален непонятками по вопросу неработоспособности VideoWriter::write(). Создается маленький видео-файл, в котором есть только заголовок (размером 5-8кб в зависимости от используемого кодека) и все.

Среда: Debian Linux 9 Stable
OpenCV из стандартного репозитария: libopencv-dev 2.4.9.1+dfsg1-2.
FFMPEG из стандартного репозитария: ffmpeg 7:3.2.8-1~deb9u1

Кто-то пишет, что неработает из-за путанницы в пакетах ffmpeg* libav*. Кто-то пишет, что нужно экспериментальным путем подобрать кодек, но я попробовал десяток комбинаций, взятых из постов «У меня все работает!» - тоже болт. Кто-то пишет, что не работает по причине отключения флага поддержки видеозаписи в стандартных репозитариях (зачем так делать - непонятно), и надо сносить стандартный пакет и хитро собирать из исходников. Кто-то пишет, что никогда вообще не видел чтоб видеозапись работала под Linux, типа эта подсистема работает только в Windows, и разработчики под Линухом даже не тестируют и не обещают поддержку. Кто-то пишет, что неработает с 2015 года и работать не будет.

Перед тем как я уработаю систему кривыми пакетами и не менее кривыми руками, я хочу услышать у того, кто столкнулся с такой проблемой и решил ее: что делать, как заставить писать VideoWriter::write() минимальными средствами?

Краткий пример, в котором запись не работает:

https://pastebin.com/NZbjek0d

 

Xintrea ()

python opencv pattern matching как найти все изображения

Задача: надо найти все картинки внутри другой картинки и обрамить их все красной рамкой.

Есть рабочий код который находит одну картинку внутри другой.

Есть второй код который находит не одну картинку, а все.

Проблема в том что первый код находит лишь одну картинку, а второй код должен находить все картинки, но не находит ни одной.

Может кто-нибудь пожалуйста сказать в чём дело и если умеет то исправить второй код чтобы он заработал?

Либо первый код так переделать чтобы находил все изображения а не только первое.

Я пробовал у меня скиллов не хватает :(

 ,

rubro ()

OpenCV, ANPR, Haar - производительность

Всем доброго времени суток! Давно тут не писал/не спрашивал, но помню, что тут много умных людей. Собственно вопрос. Дано: Windows(пардон), OpenCV master + TBB (собрано из сорсов), Visual Studio 2015 Community. Для самодельной ANPR юзаю уже обученный каскад Хаара из примеров самого OpenCV. Вся беда в том, что меня смущает конское время обработки кадра (640*480) в 130-170мс одним только каскадом. Очень долго. Как я понял, реализация каскадов в OpenCV не умеет cuda/opencl, только через tbb можно устроить распараллеливание (работает, грузит 2-3 ядра вместо одного, если считать по процентам загрузки core i5, но выигрыш от этого 40мс от силы). Код написан с поддержкой TAPI (функции обработки изображения типа фильтров Кэнни и т.д. дают прирост в разы). Вот примерно так все юзается.


UMat _Frame;
// Инициализация _Frame из видеопотока идет в цикле
CascadeClassifier _HAAR = CascadeClassifier("haarcascade_russian_plate_number.xml");
vector<Rect> _Rects;
// начало замера времени
_HAAR.detectMultiScale(_Frame, _Rects);
// конец замера времени

 ,

m1rag3 ()

OpenCV не собирается больше с ffmpeg

Всем привет!

В ходе огромного количества сборок и пересборок ffmpeg и opencv, последний перестал собираться с поддержкой первого:

-- Checking for modules 'libavcodec;libavformat;libavutil;libswscale'
--   Found libavcodec, version 57.86.103
--   Found libavformat, version 57.68.100
--   Found libavutil, version 55.51.100
--   Found libswscale, version 4.3.101
-- Checking for module 'libavresample'
--   Found libavresample, version 3.2.0
-- WARNING: Can't build ffmpeg test code
*****************************************
--     FFMPEG:                      NO
--       avcodec:                   YES (ver 57.86.103)
--       avformat:                  YES (ver 57.68.100)
--       avutil:                    YES (ver 55.51.100)
--       swscale:                   YES (ver 4.3.101)
--       avresample:                YES (ver 3.2.0)

Судя по тому, какие файлы воспроизводит cmake, он ищет (и находит) заголовочники библиотеки ffmpeg в /usr/local/{include,lib}, вместо /usr/{include,lib}. Переустановка ffmpeg не помогла, -D FFMPEG_INCLUDE_DIRS=/usr/include не помогло. Как ему указать верную директорию, где установлен ffmpeg?

 ,

aido ()

QT+OpenGL+OpenCV Memory Leak

Всем привет!

QT5.8, OpenCV 3.2

Решил написать плеер, в котором было бы на одном окне два QOpenGLWidget. При загрузке в GRAM текстур (cv::ogl::Texture2D::copyFrom), начинает дико течь память, если есть два виджета, и нет течи, если один виджет. Оба виджета живут независимой жизнью (по отдельному инитят OpenGL, имеют свои слоты и т.д.).

Интересно, что при комментировании обращения именно к copyFrom, протечка пропадает.

Из-за чего такое может быть?

 , , ,

aido ()

Распознавание повернутого шаблона в openCV

Hi,

Мне нужно найти шаблон на картинке (2D), причем шаблон может быть повернут. Нпр., беру произвольную картинку и шаблон в виде буквы А, поворачиваю шаблон на произвольный угол и копирую на произвольное место картинки. Попробовал искать простым примером для MatchTemplate, но, похоже, не работает.

 

third112 ()

RTSP CUDA opencv streaming

Всем привет!

Понадобилось нативно включить в opencv поддержку rtsp потока в формате h264 при помощи ffmpeg+cuda. Версия 3.2.4 его нормально тянет и хочется минимумом телодвижений сделать то же в OpenCV. нашел в modules/videoio/src/cap_ffmpeg_impl.hpp строчку, которая включает поддержку rtsp по tcp и хотел туда же вставить -hwaccel cuvid, но после этого opencv отказалась собираться. Есть ли в сети патчи, которые умеют правильно отображать видео в связке (OpenCV+FFMpeg+Cuda+RTSP+H264)?

 , ,

aido ()

OpenCV 3.2+Cuda 8.0

Всем привет!

Кто-нибудь пробовал собирать OpenCV 3.2 с поддержкой Cuda 8.0 (карточка - nvidia gtx 1070)?

У меня заканчивается на ошибке:

cmake CMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER=g++-5 -DCMAKE_CC_COMPILER=gcc-5 -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -std=c++11" -D WITH_CUDA=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D CMAKE_INSTALL_PREFIX=/usr -D WITH_TBB=ON WITH_FFMPEG=ON -D WITH_GSTREAMER=OFF -D WITH_OPENGL=ON .. && make -j6

blablabla

[ 36%] Built target pch_Generate_opencv_superres
In file included from /usr/local/cuda-8.0/include/cuda_runtime.h:78:0,
                 from <command-line>:0:
/usr/local/cuda-8.0/include/host_config.h:119:2: error: #error -- unsupported GNU version! gcc versions later than 5 are not supported!
 #error -- unsupported GNU version! gcc versions later than 5 are not supported!
  ^~~~~
CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:206 (message):
  Error generating
  /prj/opencv/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o

Если я меняю компилер на clang++ 3.8.1 (который CUDA поддерживает), то opencv говорит, что он clang++ не поддерживает для сборки модулей CUDA.

Если я меняю компилер на gcc-4.9, то он перестаёт понимать код (nullptr и прочие ништяки с++11)

Это ещё половина веселья. Хочется собрать в тот же пакет ещё opencv_contrib с поддержкой той же CUDA. Там тоже несовместимости по версии компилятора.

При этом у некоторых ребят собралось даже на g++-6.2.

Кто-нибудь в курсе, как сотворить это шаманство и собрать opencv+cuda?

P.S.: пробовал версии компиляторов специфицировать явно и глобально. Всё равно то же самое.

 , , , ,

aido ()

Задержка при вызове cv::VideoCapture::read()

Написала (ну почти скопировала отсюда) видеоплеер. Сделала переход к следующему видео в плейлисте при завершении текущего.

Заметила, что есть какие-то задержки...

Видео закончилось, все застыло на 5-6 сек, пошло следующее.

Долго выполняется вот эта строчка, когда read возвращает false, т.е. когда видео закончилось:

if (!capture.read(frame))

То есть вот эта функция:

cv::VideoCapture::read(Mat &image)

Господа, подскажите, пожалуйста, как с этим бороться? Как найти кол-во кадров в видео, чтоб лишний раз read не вызывать - не нашла.

Всем заранее спасибо.

 , ,

traktor ()

OpenCV шумы

День добрый, хочу убрать шум из этого видео https://drive.google.com/file/d/0B7W83fTVs1M9SmJWZ3BrQk5RalU/view решил использовать фильтр ранжирующий, где можно реализацию найти или если это не верное решение, то какое решение будет лучше?

 ,

asala1234 ()

Переделать с С++ на C#

Необходимо выполнить сегментацию водоразделом для дальнейшей работы. Нашла на openCv, но не до конца получается преобразовать в OpenCvSharp. Не обязательно выделение объектов разными цветами и их подсчет. Буду рада, если поможете. Вот сайт, с которого брала код https://github.com/andreyf/opencv_tutorials/blob/master/watershed_and_distanc...

Подскажите пожалуйста, уже руки опускаются. Проблема именно с аргументами некоторых функций. Вот что сделала, дальше не получается. Может кто знает как переделать дальше? или что исправить

            var filename = "1.bmp";//Загрузка изображения
            var img0 = Cv.LoadImage(filename))
            IplImage bw = null;
            bw = new IplImage(img0.Size, BitDepth.U8, 1);
            img0.CvtColor(bw, ColorConversion.RgbToGray);
            Cv.Threshold(bw, bw, 40, 255, ThresholdType.Binary);
            CvMat dist = null;
            Cv.DistTransform(bw, dist, DistanceType.L2, 3);
            Cv.Normalize(dist, dist, 0, 1, NormType.MinMax);
            Cv.Threshold(dist, dist, .5, 1, ThresholdType.Binary);
            CvMat dist_8u = null;
            dist.Convert(dist_8u, ????);
                // Find total markers
            CvMemStorage storage = new CvMemStorage();
            CvSeq<CvPoint> contours = null;
            int contoursCont = Cv.FindContours(dist_8u, storage, out contours, CvContour.SizeOf, ContourRetrieval.External, ContourChain.ApproxSimple, Cv.Point(0, 0));

 ,

xoma5555 ()