刚开始学习ubuntu,有些项目需要用到opencv,当我用下面的命令安装包的时候,总是出现“E:无法定位软件包 opencv”的错误。然后开始着手解决,网上搜集了很多的教程,大部分都是说要更换源,我也照做了,但是还是出现上述错误。
直到我看到了
这篇优秀的文章
后,我的问题终于解决了。所以想把过程分享给大家。
所以,并不是所有的库都是以“sudo apt-get install package”的方式进行安装的,有些库是有特定的安装方式,具体根据实际情况。
sudo apt-get install package
下面是
这篇优秀的文章
链接,大家可以点击链接参考文章。
但是,有些注意事项我想在这说一下:
1、所有命令(除了 cd )尽量在开头加上“sudo”,否则你会遇到以下错误;
2、严格按照博主的内容进行配置,别出什么幺蛾子。
3、make -j8 //8核编译,电脑核数不够直接make -j
4、依赖库最好一个一个安装,要不然出问题了你都不知道是那一个库的问题!
链接奉上:
https://blog.csdn.net/qq_16792139/article/details/124079537
下面是我安装的过程,记录下来,和博主的基本一致。
1. C/C++编译环境配置
Linux系统下使用C++开发
OPenCV
项目,先要搭建C/C++开发环境,当然,如果你已经搭建好了开发环境,下面的步骤可以省略。
在终端输入:
sudo apt install gcc
sudo apt install g++
安装C/C++编译器GCC、G++
或者安装build-essential,安装了该软件包,编译c/c++所需要的软件包也都会被安装。
sudo apt install build-essential
安装cmake编译工具
sudo apt install cmake
2. 安装相关依赖库
安装libgtk,GTK(GIMP Toolkit)是一个Linux平台下基于Xwindow图形窗口的图形用户编程接口工具,可以借助它来开发Linux平台下基于Xwindow的图形用户界面。
sudo apt install libgtk2.0-dev
安装pkg-config
sudo apt install pkg-config
安装ffmpeg,ffmpeg(命令行工具) 是一个快速的音视频转换工具。
sudo apt install ffmpeg
安装libavcodec-dev
sudo apt install libavcodec-dev
安装libavformat-dev
sudo apt install libavformat-dev
安装libswscale-dev
sudo apt install libswscale-dev
根据实际需要,选择性安装libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev等,最好安装吧。
sudo apt install libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev libtbb2 libtbb-dev libdc1394 2.x CUDA Toolkit 6.5
3. 安装OpenCV
在OpenCV官网下载sources,下载地址:
Releases – OpenCV
进入安装包所在位置,在终端输入(版本号根据你自己的写):
unzip opencv-4.5.5.zip
解压完成后当前目录下会生成opencv-4.5.5文件夹,进入该文件夹
cd opencv-4.5.5
在此路径下新建一个编译目录build
sudo mkdir build
进入build目录
cd build
进行cmake-make编译,然后使用cmake命令进行配置
sudo cmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
这条命令会在build目录里生成对应配置的Makefile文件,可以看到配置信息之间是通过空格和-D来分割和标示的,配置了很多信息,我觉得比较重要的一个是 -D OPENCV_GENERATE_PKGCONFIG=ON,生成opencv.pc文件的配置(注意,opencv4生成的文件叫做opencv4.pc),另外就是 CMAKE_INSTALL_PREFIX=/usr/local这个关于安装路径的配置,这里的安装路径是在/usr/local下,这也是opencv的默认配置。
千万注意,最后的两个…千万不要删,这个指向CMakeLists.txt所在的目录。
此时当前目录仍是build,直接编译安装即可
make -j8 //8核编译,电脑核数不够直接-j
make100%即编译成功
然后输入sudo make install进行安装
sudo make install
安装完成后,需要对环境变量进行配置。进入root权限,在终端输入:
sudo -i
vim /etc/ld.so.conf.d/opencv.conf
在vim中进入编辑模式输入:/usr/local/lib,退出保存
然后在终端输入:vim /etc/bash.bashrc,进入bash.bashrc文件,在尾行输入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
配置成功,退出root。
exit
4. OpenCV测试
终端输入:ldconfig -v | grep opencv,检查opnecv是否安装成功
ldconfig -v | grep opencv
在任意目录下创建opencv文件夹,将测试图片放过去,编写测试代码
test.cpp
#include<iostream>
#include<opencv4/opencv2/core/core.hpp>
#include<opencv4/opencv2/highgui.hpp>
#include<opencv4/opencv2/opencv.hpp>
#define Usage()\
{std::cerr<<"usage: ./showpic FILE"<<std::endl;}
int main (int argc, char** argv[])
{
if(argc !=2) Usage();
cv::Mat img=cv::imread("/自己的路径/1.png");
cv::imshow("window",img);
cv::waitKey(0);
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage test.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
在终端cmake-make编译
mkdir build
cd build
cmake ..
make
编译成功后,运行生成的可执行文件DisplayImage
./DisplayImage
显示图片:
至此安装任务完成!