ubuntu20.04安装opencv4.6.0-CUDA版本
一、下载opencv和对应的opencv_contrib
二、安装依赖库
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
三、编译opencv
1.在opencv目录下,创建build文件夹
2.进入build目录,执行如下cmake命令
cmake -D CMAKE_BUILD_TYPE=Release \
-D OPENCV_EXTRA_MODULES_PATH=/home/zxm/opencv/opencv_contrib-4.6.0/modules \
-D OPENCV_ENABLE_NONFREE=ON \
-D WITH_OPENMP=ON \
-D WITH_TBB=ON \
-D WITH_QT=ON \
-D CUDA_NVCC_FLAGS="--Wno-deprecated-gpu-targets" \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D WITH_CUDA=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3 \
-D PYTHON3_INCLUDE_DIR=$(/usr/bin/python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-D PYTHON3_PACKAGES_PATH=$(/usr/bin/python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
-D PYTHON3_NUMPY_INCLUDE_DIRS=$(/usr/bin/python3 -c "import numpy as np;import os; print(os.path.dirname(np.__file__)+'/core/include')") \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 \
..
3.执行编译
make -j8
sudo make install
4.配置环境
sudo gedit /etc/ld.so.conf.d/opencv.conf
# 填入下面的信息
/usr/local/opencv4/lib
# 保存配置文件
sudo ldconfig
sudo gedit /etc/bash.bashrc
# 写入下面的信息
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv4/lib/pkgconfig
export PATH=$PATH:/usr/local/opencv4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv4/lib
5.更新配置
source /etc/bash.bashrc
6.测试
pkg-config --modversion opencv4
Qt中测试
INCLUDEPATH += /usr/local/opencv4/include \
/usr/local/opencv4/include/opencv4 \
/usr/local/opencv4/include/opencv4/opencv2
LIBS += /usr/local/opencv4/lib/libopencv*
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
using namespace cv::cuda;
void opencv_test(){
cout <<"opencv test" << endl;
cout <<"opencv version: " << CV_VERSION << endl;
Mat src = imread("/home/zxm/图片/opencv.png");
if(src.empty()){
cout << "could not load image" << endl;
return;
}
namedWindow("src",WINDOW_NORMAL);
imshow("src",src);
waitKey(2000);
}
void cuda_test(){
cout << "CUDA-opencv test" << endl;
int num_devices = getCudaEnabledDeviceCount();
if (num_devices == 0 )
{
std::cout << "OpenCV is compiled without CUDA support" << endl;
return;
}
else if (num_devices == -1)
{
std::cout << "CUDA driver is not installed" << endl;
return;
}
else if (num_devices >= 1)
{
std::cout << "CUDA-Opencv can be used and the number of GPU is :" << num_devices << endl;
return;
}
}
int main()
{
opencv_test();
cuda_test();
return 0;
}