序言:这篇文章记录了我在Ubuntu重新搭建OpenCV,c++环境。后续会补充opencv-python、深度学习、ROS环境配置,使之互相兼容。具体操作和安装包在文章中都有,不同版本的安装过程长治小异。
搭建过程共分为以下几大部份:1.换国外源;2.安装依赖项;3.下载OpenCV源文件;4.配置、编译、安装OpenCV;5.配置环境;6.demo测试;7.简单项目测试;8.其他
换国外源
安装依赖项安装g++,cmake,make,wget,unzip
sudo apt install -y g++
sudo apt install -y cmake
sudo apt install -y make
sudo apt install -y wget
sudo apt install -y unzip
安装opencv依赖的基本库
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
后续也可以按照须要安装一些可选的库
下载OpenCV源文件下载源文件
直接在官网上下载源文件(无需翻墙)
点击Source进行下载
解压,重命名
下载完成后,解压到主目录下,重命名为opencv
配置、编译、安装OpenCV新建build目录
按Ctrl+Alt+T打开终端,步入到opencv目录中,新建并步入目录build
cd opencv
mkdir build
cd build
使用cmake配置opencv
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
说明:-DOPENCV_GENERATE_PKGCONFIG=YES
OpenCV4以上默认不使用pkg-config,该编译选项开启生成opencv4.pc文件,支持pkg-config功能(可以配置其他第三方库,不仅仅opencv第三方库)
这是不添加扩充库的写法,第一次配使用这条命令就可以了
下边给出添加扩充库和已安装anaconda的写法:
添加扩充库写法
sudo cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
已安装anaconda写法
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_SHARED_LIBS=OFF -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF ..
说明:假如你想让你的opencv配置有cuda加速、cudnn的功能,在按那文章执行cmake命令时,须要将cmake命令替换掉,请朋友们自行搜索
可能出现的问题
问题描述:配置卡在IPPICV:Download:ippicv_2020_lnx_intel64_20191018_general.tgz
问题缘由:未知
解决方式:并不是内网的问题,重启终端多次Ctrl+C再运行原先的命令
须要一点时间
用make进行编译
make -j4
说明:-j4中的4指同时使用4个进程,按照自己情况调整此值
可能出现的问题
问题描述:libopencv_imgcodecs.so.4.6.0:报错
问题缘由:先安装的anconda,导致了anconda和c++的冲突,造成opencv报错
解决方式:运行命令(注意stringwind换成自己的用户名)
sudo mv /home/stringwind/anaconda3/lib/libtiff.so* ~/temp
sudo cp /lib/x86_64-linux-gnu/libtiff.so.5 /usr/local/lib/libtiff.so.5
把libtiff的so文件移除掉并不影响ancondalinux下查看opencv版本,启动anconda会重新下回去
用make进行安装
sudo make install
默认安装路径为:
/usr/local/bin-executablefiles
/usr/local/lib-libraries(.so)
/usr/local/cmake/opencv4-cmakepackage
/usr/local/include/opencv4-headers
/usr/local/share/opencv4-otherfiles(e.g.trainedcascadesinXMLformat)
环境配置配置pkg-config环境
opencv4.pc文件的默认路径:/usr/local/lib/pkgconfig/opencv4.pc.若此目录下没有,可以使用以下命令搜索sudofind/-inameopencv4.pc
sudo gedit /etc/profile.d/pkgconfig.sh
可能为空文件,在文件中加入PKG_CONFIG_PATH下边一行代码
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
保存并退出,source激活
source /etc/profile
验证是否成功
pkg-config --libs opencv4
类似信息即表示成功
配置动态库环境
(通常想加第三方库这个是必须操作linux 删除文件夹,或则通过改/etc/bashrc)
打开动态库路径文件(空文件)
sudo gedit /etc/ld.so.conf.d/opencv4.conf
文件末尾加上OpenCV的lib路径node.js安装linux,保存退出
/usr/local/lib
使配置的路径生效
sudo ldconfig
demo测试
Ctrl+Alt+T打开新终端linux下查看opencv版本,步入到example_cmake目录
cd ~/opencv/samples/cpp/example_cmake
执行以下命令
cmake .
make
./opencv_example
正常来说,应当有摄像头窗口界面;假如没有摄像头,出现“HelloOpenCV“也测试成功
简单项目建立
一个显示图片的C++程序
新建并步入ImageShow目录,在目录下新建main.cpp文件
mkdir ImageShow
cd ImageShow
touch main.cpp
打开main.cpp,输入以下代码
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv )
{
Mat image;
image = imread( argv[1], 1 );
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
终端输入,新建CMakeLists.txt(CMakeLists.txt的编撰看一下)
touch CMakeLists.txt
打开CMakeLists.txt,输入
#cmake needs this line
cmake_minimum_required(VERSION 3.1)
#Define project name
project(ImageShow)
#Find OpenCV, you may need to set OpenCV_DIR variable
#to the absolute path to the directory containing OpenCVConfig.cmake file
#via the command line or GUI
find_package(OpenCV REQUIRED)
#Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
#Declare the executable target built from your sources
add_executable(ImageShow main.cpp)
#Link your application with OpenCV libraries
target_link_libraries(ImageShow PRIVATE ${OpenCV_LIBS})
从网上下载一张图片,倒入文件夹内,重命名为1.png。建立并运行程序
cmake .
make
./ImageShow 1.png
会生成一大堆文件
最终能看见刚才下载的图片
其他Debug的相关问题
这篇文章没有涉及到Debug调试的相关问题,通常通过GDB调试,配置task.json、launch.json、c_cpp_properties.json文件或则通过cmake-debug,先按下不表
cmake重新编译的方式
删掉build文件夹下的文件CMakeCache.txt,再重新编译
rm CMakeCache.txt
文章评论