Ubuntu(Linux)安装 OpenCV 4.4.0
安装OpenCV4.4.0
安装最新版的 OpenCV 可以解决大部分的兼容性问题。
下载压缩包
链接:https://pan.baidu.com/s/1PdgTUV0h016DTE9TGmhDWg 提取码:7s0y
解压 zip 格式的源码后,在解压后的目录中进入 apps 文件夹:
unzip opencv-4.4.0.zip
安装依赖包
必须安装的依赖包:
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
此时,如果 apt-get 出现"软件包有未满足的依赖关系“问题。
此问题的解决办法:使用 aptitude 。
aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。 运行后,不接受未安装方案,接受降级方案。这样,就可以成功安装库了。
编译和安装
此时的命令执行,我们需要在之前进入的 apps 文件夹目录下。当然,这个目录可能每个人的都不一样,以下命令的执行需要 CMakeLists.txt 文件。这个文件在我的虚拟机上是在 apps 文件夹下。所以,如果编译时报错找不到文件,请在自己的虚拟机上进行查找,然后进入相应文件夹下,进行以下指令。
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install
其中,第二个指令 sudo make 可能执行的时间比较长,我的Ubuntu执行了2个多小时才结束。
配置OpenCV4.4.0
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
测试OpenCV4.4.0
首先新建一个 QT 文件,这里创建了有默认代码的 QT 文件,然后打开 pro 文件,为其配置 opencv:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv4 \
/usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_imgcodecs.so
测试源程序 main.cpp:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("群岛.jpg");
line(img,Point(1,1),Point(250,250),Scalar(0,0,255),5);
namedWindow("island",0);
resizeWindow("island", 1000, 500);
imshow("island",img);
waitKey(0);
return 0;
}
需要注意的是:读取图片的时候,如果像上面的程序一样写相对路径的话,需要将图片放入项目的 debug 目录下,不能放在源程序所在的目录下。否则,请写绝对路径。下面,还会展示一个绝对路径的例子。
测试结果: 绝对路径的例子源代码:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("/mnt/hgfs/My Share/冬景.jpg");
line(img,Point(1,1),Point(250,250),Scalar(0,0,255),5);
namedWindow("winter",0);
resizeWindow("winter", 1000, 500);
imshow("winter",img);
waitKey(0);
return 0;
}
测试结果:
最后的话
码的这么累,各位观众给个赞呗!
|