Перейти к содержимому

Как удалить opencv

  • автор:

Переустановите OpenCV с нуля

Но я получаю эту ошибку. Ошибка OpenCV: ошибка Unspecified (функция не реализована). Перестройте библиотеку с помощью Windows, GTK+ 2.x или поддержки Carbon. Если вы находитесь на Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, запустить cmake или настроить скрипт) в cvShowImage, файл /home/pankaja/Desktop/OpenCV-tmp/opencv/modules/highgui/src/window.cpp, строка 611 Traceback (последний последний вызов): Файл «/home/pankaja/PycharmProjects/ImageProcessing/imageprocess.py «, строка 8, в cv2.imshow(‘image’, img) cv2.error: /home/pankaja/Desktop/OpenCV-tmp/opencv/modules/highgui/src/window.cpp: 611: ошибка: (-2) Функция не реализована. Перестройте библиотеку с Windows, поддержкой GTK+ 2.x или Carbon. Если вы работаете в Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем перезапустите cmake или настройте скрипт в функции cvShowImage с некоторыми ошибками, наконец, мне удалось установить libgtk2.0-dev и pkg-config (следующие пакеты имеют неудовлетворенные зависимости OpenCV 3.2 Python 3.5), но все же это дает ошибку Итак, теперь я думаю о том, чтобы сделать новую установку как на python 3.5, так и на OpenCV, чтобы исправить эту проблему. Как я могу полностью удалить OpenCV?

Thidasa Paranavitharana 05 сен. 2017, в 08:35

Удаление красного, зеленого и синего канала из цветного изображения в Python

Чтобы удалить красный канал из цветного изображения, считайте изображение в массив BGR с помощью cv2.imread() и присвойте нули 2D-массиву, соответствующему красному каналу.

В этом руководстве мы будем использовать библиотеку OpenCV Python и преобразовать изображение так, чтобы в нем не было красного канала.

Пример 1

В этом примере мы удалим красный канал со следующего изображения.

Удаление красного канала с изображения

import cv2 import numpy as np #read image src = cv2.imread('D:/original.png', cv2.IMREAD_UNCHANGED) print(src.shape) # assign red channel to zeros src[. 2] = np.zeros([src.shape[0], src.shape[1]]) #save image cv2.imwrite('D:/no-red-channel.png',src)

Удаление красного канала

Это изображение имеет только зеленый и синий каналы исходного изображения.

Как удалить зеленый канал?

Чтобы удалить красный канал из цветного изображения, считайте изображение в массив BGR с помощью cv2.imread() и присвойте нули двумерному массиву, соответствующему зеленому каналу.

В этом руководстве мы будем использовать библиотеку OpenCV Python и преобразовать изображение так, чтобы в нем не было зеленого канала.

Пример 1

В этом примере мы удалим зеленый канал со следующего изображения.

Удаление зеленого канала

import cv2 import numpy as np #read image src = cv2.imread('D:/original.png', cv2.IMREAD_UNCHANGED) print(src.shape) # assign green channel to zeros src[. 1] = np.zeros([src.shape[0], src.shape[1]]) #save image cv2.imwrite('D:/no-green-channel.png',src)

Как удалить зеленый канал из изображения

Это изображение имеет только красный и синий каналы исходного изображения.

Как удалить синий канал?

Чтобы удалить синий канал из цветного изображения, считайте изображение в массив BGR с помощью cv2.imread() и присвойте нули двумерному массиву, соответствующему синему каналу.

В этом руководстве мы будем использовать библиотеку OpenCV Python и преобразовывать изображение так, чтобы в нем не было красного канала.

Пример 1

В этом примере мы удалим синий канал со следующего изображения.

Удаление синего канала

import cv2 import numpy as np #read image src = cv2.imread('D:/original.png', cv2.IMREAD_UNCHANGED) print(src.shape) # assign blue channel to zeros src[. 0] = np.zeros([src.shape[0], src.shape[1]]) #save image cv2.imwrite('D:/no-blue-channel.png',src)

Как удалить зеленый канал

Это изображение имеет только красный и зеленый каналы исходного изображения.

Установка OpenCV + CUDA на Windows

В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.

Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном мануале.

Сборка тестировалась для:

  • Windows 8.1 + Visual Studio 2017 + Python 2/3 + CUDA 10.0 + GeForce 840m
  • Windows 10 + Visual Studio 2019 + Python 2/3 + CUDA 10.0 + GeForce GTX 1060

Что потребуется для установки

В моей сборке использовались следующие инструменты:

  1. CMake 3.15
  2. MS Visual Studio 2019 64-бит + средства CMake С++ для Windows
  3. Python 3.7.3 64-бит + NumPy 64-бит
  4. Python 2.7.16 64-бит + NumPy 64-бит
  5. CUDA 10.0
  6. CuDNN 7.6.2
  7. OpenCV 4.1.1 и OpenCV-contrib-4.1.1

Установка

Так как установка производится через консольные команды, то следует внимательно и аккуратно выполнять все шаги. Также, при необходимости, меняйте установочные пути на свои.
Для начала необходимо установить требуемое ПО, причем Visual Studio должна быть установлена до CUDA:

  • CMake (версия >= 3.9.1)
  • MS Visual Studio
  • Python 3.7 (дистрибутив Anaconda3)
  • CUDA 10.0
  • CuDNN 7.6.2

Далее загружаем архивы исходников opencv-4.1.1 и opencv-contrib-4.1.1 в желаемое место (в моем случае это C:\OpenCV\).

git clone https://github.com/opencv/opencv.git -b "4.1.1" git clone https://github.com/opencv/opencv_contrib.git -b "4.1.1"

Создаем папку build/ внутри opencv-4.1.1.

Далее сгенерируем файлы сборки с помощью cmake. Мы будем использовать консольный вариант cmake, так как cmake-gui путает типы некоторых переменных (например, OPENCV_PYTHON3_VERSION) и, как следствие, неправильно генерирует файлы.

Открываем консоль по пути C:\OpenCV\ и прописываем переменные.

set "opencvSource=opencv-4.1.1" set "opencvExtraModules=opencv_contrib-4.1.1/modules" set "opencvBuild=%opencvSource%\build" set "compiler=Visual Studio 16 2019" set "buildType=Release"

Примечание. Для Visual Studio 2017 генератор пишется как «Visual Studio 15 2017 Win64» и без флага -A.

Также можно явно указать питоновские библиотеки для python 2 и python 3 на случай, если сборщик не сможет найти их автоматически.

set "python2_executable=C:/Python27/python.exe" set "python2_include_dir=C:/Python27/include" set "python2_library=C:/Python27/libs/python27.lib" set "python2_numpy_include_dirs=C:/Python27/Lib/site-packages/numpy/core/include" set "python2_packages_path=C:/Python27/Lib/site-packages" set "python3_executable=C:/Users/root/Anaconda3/python.exe" set "python3_include_dir=C:/Users/root/Anaconda3/include" set "python3_library=C:/Users/root/Anaconda3/libs/python37.lib" set "python3_numpy_include_dirs=C:/Users/root/Anaconda3/lib/site-packages/numpy/core/include" set "python3_packages_path=C:/Users/root/Anaconda3/Lib/site-packages"

Примечание. Обратите внимание на то, что библиотека NumPy должна быть той же разрядности, что и OpenCV. Проверить это легко:

import numpy.distutils.system_info as sysinfo print(sysinfo.platform_bits)

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

cmake ^ -B"%opencvBuild%/" ^ -H"%opencvSource%/" ^ -G"%compiler%" ^ -Ax64 ^ -DCMAKE_BUILD_TYPE=%buildType% ^ -DBUILD_opencv_world=ON ^ -DINSTALL_TESTS=OFF ^ -DINSTALL_C_EXAMPLES=OFF ^ -DBUILD_EXAMPLES=OFF ^ -DOPENCV_EXTRA_MODULES_PATH="%opencvExtraModules%/" ^ -DBUILD_PROTOBUF=ON ^ -DBUILD_opencv_python_bindings_generator=ON ^ -DWITH_CUDA=ON ^ -DCUDA_FAST_MATH=ON ^ -DWITH_CUBLAS=ON ^ -DCUDA_ARCH_PTX=7.5 ^ -DBUILD_opencv_python2=ON ^ -DPYTHON2_EXECUTABLE="%python2_executable%" ^ -DOPENCV_PYTHON2_VERSION=2.7.16 ^ -DPYTHON2_INCLUDE_DIR="%python2_include_dir%" ^ -DPYTHON2_LIBRARY="%python2_library%" ^ -DPYTHON2_NUMPY_INCLUDE_DIRS="%python2_numpy_include_dirs%" ^ -DPYTHON2_PACKAGES_PATH="%python2_packages_path%" ^ -DBUILD_opencv_python3=ON ^ -DPYTHON3_EXECUTABLE="%python3_executable%" ^ -DOPENCV_PYTHON3_VERSION=3.7.3 ^ -DPYTHON3_INCLUDE_DIR="%python3_include_dir%" ^ -DPYTHON3_LIBRARY="%python3_library%" ^ -DPYTHON3_NUMPY_INCLUDE_DIRS="%python3_numpy_include_dirs%" ^ -DPYTHON3_PACKAGES_PATH="%python3_packages_path%"

Значение некоторых флагов

  • BUILD_opencv_world – необязательный модуль, содержащий копии всех выбранных в ходе установки библиотек. Удобен при разработке на C++, так как вместо подключения кучи зависимостей opencv можно подключить одну зависимость opencv_world411.lib в проект
  • INSTALL_EXAMPLES/INSTALL_TESTS – установка примеров/тестов кода opencv
  • CUDA_FAST_MATH, WITH_CUBLAS – дополнительные модули для CUDA, призванные ускорить вычисления
  • CUDA_ARCH_PTX – версия PTX инструкций для улучшения производительности вычислений
  • OPENCV_EXTRA_MODULES_PATH – путь до дополнительных модулей из opencv-contrib (обязательно для CUDA)
  • BUILD_PROTOBUF – для работы некоторых модулей opencv необходим Protobuf (сборщик opencv в любом случае поставит BUILD_PROTOBUF=ON)

Спустя примерно 10 минут в консоле должна появиться информация о сборке и завершающие строки «Configuring done» и «Generating done». Проверяем всю информацию, особенно разделы NVIDIA CUDA, Python 2, Python 3.

Далее собираем решение. На сборку может уйти несколько часов в зависимости от вашего процессора и версии Visual Studio.

cmake --build %opencvBuild% --target ALL_BUILD --config Release
cmake --build %opencvBuild% --target INSTALL --config Release

После успешной установки создаем системную переменную OPENCV_DIR со значением C:\OpenCV\opencv-4.1.1\build\install\x64\vc15\bin и также добавляем ее в PATH.

Тест

Проверим работоспособность OpenCV с модулем CUDA на простом примере умножения матриц.

Подключение OpenCV в проект Visual Studio

  1. Установить тип сборки Release/x64 (для Debug следует собрать OpenCV с флагом Debug)
  2. Project Properties → C/C++ → General → Добавить строку «C:\OpenCV\opencv-4.1.1\build\install\include» в Additional Include Directories
  3. Project Properties → Linker → General → Добавить строку « C:\OpenCV\opencv-4.1.1\build\install\x64\vc16\lib» в Additional Library Directories
  4. Project Properties → Linker → General → Добавить «;opencv_world411.lib» («;opencv_world411d.lib» для Debug) в конец Additional Dependencies

Пример на Python 3

import numpy as np import cv2 as cv import time rand = np.random.random((1024, 1024)).astype(np.float32) h_array1 = np.stack([rand, rand],axis=2) h_array2 = h_array1 d_array1 = cv.cuda_GpuMat() d_array2 = cv.cuda_GpuMat() d_array1.upload(h_array1) d_array2.upload(h_array2) start = time.time() cv.cuda.gemm(d_array1, d_array2, 1, None, 0, None, 1) end = time.time() print("Time elapsed:", end - start, "sec")

Вывод в консоли

Time elapsed: 0.3130002021789551

Пример на C++

#include #include #include using namespace std; using namespace cv; using namespace cv::cuda; int main() < Mat h_array1 = Mat::ones(1024, 1024, CV_32FC2); Mat h_array2 = Mat::ones(1024, 1024, CV_32FC2); Mat h_array3 = Mat::zeros(1024, 1024, CV_32FC2); Mat h_result; GpuMat d_array1, d_array2, d_array3, d_result; d_array1.upload(h_array1); d_array2.upload(h_array2); const clock_t begin_time = clock(); cuda::gemm(d_array1, d_array2, 1.0, d_array3, 0.0, d_result); cout 

Вывод в консоли

Time elapsed: 0.354

Удаление

Чтобы удалить OpenCV, нужно выполнить команду.

cmake --build %opencvBuild% --target uninstall --config Release

и удалить системную переменную OPENCV_DIR и убрать путь до OpenCV из PATH.

Заключение

В статье мы рассмотрели установку OpenCV 4 для ОС Windows 10. Данный алгоритм тестировался на Windows 8.1 и Windows 10, но, в теории, может собираться и на Windows 7. За дополнительной информацией можно обратиться к списку источников ниже.

P.S. Напоследок сведем все установочные команды в один .bat файл для тех, кто хочет автоматизировать установку.

install_opencv411.bat

cd C:\OpenCV git clone https://github.com/opencv/opencv_contrib.git -b "4.1.1" git clone https://github.com/opencv/opencv.git -b "4.1.1" ren opencv opencv-4.1.1 ren opencv_contrib-4.1.1 set "opencvSource=opencv-4.1.1" set "opencvExtraModules=opencv_contrib-4.1.1/modules" set "opencvBuild=%opencvSource%\build" set "compiler=Visual Studio 16 2019" set "buildType=Release" set "python2_executable=C:/Python27/python.exe" set "python2_include_dir=C:/Python27/include" set "python2_library=C:/Python27/libs/python27.lib" set "python2_numpy_include_dirs=C:/Python27/Lib/site-packages/numpy/core/include" set "python2_packages_path=C:/Python27/Lib/site-packages" set "python3_executable=C:/Users/root/Anaconda3/python.exe" set "python3_include_dir=C:/Users/root/Anaconda3/include" set "python3_library=C:/Users/root/Anaconda3/libs/python37.lib" set "python3_numpy_include_dirs=C:/Users/root/Anaconda3/lib/site-packages/numpy/core/include" set "python3_packages_path=C:/Users/root/Anaconda3/Lib/site-packages" cmake ^ -B"%opencvBuild%/" ^ -H"%opencvSource%/" ^ -G"%compiler%" ^ -Ax64 ^ -DCMAKE_BUILD_TYPE=%buildType% ^ -DBUILD_opencv_world=ON ^ -DINSTALL_TESTS=OFF ^ -DINSTALL_C_EXAMPLES=OFF ^ -DBUILD_EXAMPLES=OFF ^ -DOPENCV_EXTRA_MODULES_PATH="%opencvExtraModules%/" ^ -DBUILD_PROTOBUF=ON ^ -DBUILD_opencv_python_bindings_generator=ON ^ -DWITH_CUDA=ON ^ -DCUDA_FAST_MATH=ON ^ -DWITH_CUBLAS=ON ^ -DCUDA_ARCH_PTX=7.5 ^ -DBUILD_opencv_python2=ON ^ -DPYTHON2_EXECUTABLE="%python2_executable%" ^ -DOPENCV_PYTHON2_VERSION=2.7.16 ^ -DPYTHON2_INCLUDE_DIR="%python2_include_dir%" ^ -DPYTHON2_LIBRARY="%python2_library%" ^ -DPYTHON2_NUMPY_INCLUDE_DIRS="%python2_numpy_include_dirs%" ^ -DPYTHON2_PACKAGES_PATH="%python2_packages_path%" ^ -DBUILD_opencv_python3=ON ^ -DPYTHON3_EXECUTABLE="%python3_executable%" ^ -DOPENCV_PYTHON3_VERSION=3.7.3 ^ -DPYTHON3_INCLUDE_DIR="%python3_include_dir%" ^ -DPYTHON3_LIBRARY="%python3_library%" ^ -DPYTHON3_NUMPY_INCLUDE_DIRS="%python3_numpy_include_dirs%" ^ -DPYTHON3_PACKAGES_PATH="%python3_packages_path%" cmake --build %opencvBuild% --target ALL_BUILD --config Release cmake --build %opencvBuild% --target INSTALL --config Release

Список источников

  1. docs.opencv.org/4.1.1/d3/d52/tutorial_windows_install.html
  2. www.learnopencv.com/install-opencv-4-on-windows
  3. jamesbowley.co.uk/build-opencv-4-0-0-with-cuda-10-0-and-intel-mkl-tbb-in-windows
  4. lightbuzz.com/opencv-cuda
  5. Глава «Building libraries from Source» книги Hands-on GPU-Accelerated Computer Vision with OpenCV and CUDA

Как удалить opencv

How-to по компиляции.

[tip] Проверено с OpenCV 4.1.0 и Qt 5.10 (только пути на свои замените).
[/tip]

Для начала, нам понадобиться:

  • OpenCV
  • CMake (Должен быть 32х битным, да же если система 64!)

Для удобства, основной путь у меня такой: E:\Projects\OpenCV и в дальнейшем я отталкиваюсь именно от этой папки (В неё же и ставите OpenCV после скачивания).

Должно скомпилироваться без проблем.

cd E:\Projects\OpenCV\opencv\build set PATH=D:\Qt\5.10\mingw53_32\bin\;%PATH% set PATH=D:\Qt\Tools\mingw530_32\bin\;%PATH% cmake ../sources -G "MinGW Makefiles" -DWITH_QT=ON -DWITH_QT_OPENGL=ON -DBUILD_EXAMLES=ON -DQT_QTCORE_LIBRARY_DEBUG="Qt5Cored.dll" -DQT_QTCORE_LIBRARY_RELEASE="Qt5Core.dll" -DQT_QMAKE_EXECUTABLE="qmake.exe" -DCMAKE_BUILD_TYPE=Release mingw32-make -j4 mingw32-make install

[tip]Если нужны ещё и nonfree модули (например для SURF), то:
«git clone https://github.com/opencv/opencv_contrib ../opencv_contrib»
и к cmake добавить параметр: «-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules» и «-DOPENCV_ENABLE_NONFREE:BOOL=ON»
Если какой-то из модулей начнёт ебать мозг, то его можно отключить дополнительным параметром к cmake: «-DBUILD_opencv_modulename=OFF»
Мне пришлось отключить:
-DWITH_OPENCL_D3D11_NV=OFF
Так как мне он не нужен вовсе и были какие-то проблемы (заголовочников не было, скорее всего).[/tip] [tip]j4 — количество ядер в проце, чтобы быстрее компилилось.
После изменения параметров cmake необходимо из директории удалить файл CMakeCache.txt[/tip] [warning]MinGW необходимо использовать тот, который или идёт с Qt или тем, которым эти исходники уже компилировали!
Соответственно нужно заменить все пути на свои. И в выводе CMake убедитесь, что используется от Qt.[/warning] [warning]UPDT: OpenCV 3.0
Если во время сборки mingw32-make ругнётся на отсутствие -lRunTmChk то cmake нужно перезапустить с флагом «-DWITH_IPP=OFF»[/warning] [warning]Если будет ругаться » error: base class ‘s
truct IUnknown’ has accessible non-virtual destructor [-Werror=non-virtual-dtor]»
то идём в папку с opencv d:\projects\opencv\sources\cmake\ открываем OpenCVCompilerOptions.cmake
ищем строку add_extra_compiler_option(-Werror=non-virtual-dtor) и ставим перед ней «#»
перезапускаем cmake.[/warning] [warning]Если будет ругаться «windres.exe: unknown option —W» то выполните заново cmake с дополнительным параметром «-DENABLE_PRECOMPILED_HEADERS=OFF»[/warning] [warning] Если будут проблемы на шаге videoio, например «sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA» и похожие, то в файле «\sources\modules\videoio\src\cap_dshow.hpp» добавьте в самом начале «#define NO_DSHOW_STRSAFE«
[/warning]

На этом установка закончена =)

Теперь попробуем тестовый проектик сделать.

Создаём новый консольный проект.

В .pro файл дописываем:

INCLUDEPATH += E:/Projects/OpenCV/opencv/build/install/include/ LIBS +=-L"E:/Projects/OpenCV/opencv/build/install/x86/mingw/lib/" LIBS += \ -lopencv_core410 \ -lopencv_highgui410 \ -lopencv_imgproc410 \ -lopencv_photo410 \ -lopencv_imgcodecs410

В main.cpp пишем:

#include ; #include ; #include using namespace std; using namespace cv; int main() < namedWindow("My Image"); Mat image = imread("K:/Projects/OpenCV HelloWorld/img.jpg"); imshow("My Image", image); waitKey(5000); return 0; >

[tip]Чуть не забыл, в системную переменную PATH добавьте путь: «E:/Projects/OpenCV/opencv/build/install/x86/mingw/bin»,
E:/Projects/OpenCV/opencv/build/install/x86/mingw/bin;%path%»
иначе проект не соберётся и ребутнуть комп, или в Qt в настройках проекта — переменных окружения добавить.[/tip] [tip]Если переходите с предыдущей версии OpenCV, то в 4.0 много изменений (ну, к примеру, наименование констант CV_BGR2GRAY теперь COLOR_BGR2GRAY), в общем документация тут: https://docs.opencv.org/[/tip]

Надеюсь, всё прошло удачно =) На этом, пока что, всё.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *