Ubuntu 16.04安装opencv

article/2025/1/18 3:18:57

前言

今天花了一天的时间在ubuntu上安装opencv(不是python包中的opencv-python,是c++接口的opencv),所谓万事开头难,难倒我的第一步不是知识,而是配环境,说到底就是菜。

在这里插入图片描述

mark一下,避免下次换电脑重新配环境的时候又捣鼓半天。

cmake

执行cmake命令之前的一些步骤就不写了,网上有很多,比如从官网或者github上下载源码,比如安装相关的依赖库(如果安装不上,那就想想办法装上吧),比如进入源码目录,然后mkdir build,cd build/

网上有各种cmake带不同的参数的命令,比如:

cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/home/fanzong/anaconda2/envs/tensorflow \-D INSTALL_PYTHON_EXAMPLES=ON \-D INSTALL_C_EXAMPLES=OFF \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \-D PYTHON_EXCUTABLE=/home/fanzong/anaconda2/envs/tensorflow/bin/python \-D WITH_TBB=ON \-D WITH_V4L=ON \-D WITH_QT=ON \    # 1-D WITH_GTK=ON \-D WITH_OPENGL=ON \-D BUILD_EXAMPLES=ON ..

直接copy上面的部分肯定不行,其中的CMAKE_INSTALL_PREFIXOPENCV_EXTRA_MODULES_PATH肯定要修改,原博主用的是自己的目录,也不提醒一下,对我们这种不认真看参数的菜鸟着实不友好(说到底还是自己菜),以及WITH_QT,如果没安装QT的话也是要改的。

翻了很多博客,最终选择了一种于我而言可行的cmake命令:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

其中/usr/local是默认目录,可以不用修改(修改了也不知道行不行),注意最后面还有2个点,表示源文件目录,也就是build的上一级目录,不能少!上面的命令只设置了两个参数,其余的参数都是默认的。

其实之前的时候使用刚刚这条命令也会报错,试了很多次还是报错,可能是安装包版本太高,之前是3.4.6,后来改成了3.4.0,就ok了。

make

cmake成功之后,执行make -j4,4应该是表示4个内核,执行之后发现CPU迅速up to 99%,然后是sudo make install,静静地等一会儿,一般cmake成功之后,make就错不了了。

g++

先不管在VScode中配置c++,直接在终端编译一下g++ t1.cpp -o t1,可能会遇到如下错误:

/tmp/ccYN8HAH.o:在函数‘main’中:
t1.cpp:(.text+0x46):对‘cv::imread(cv::String const&, int)’未定义的引用
t1.cpp:(.text+0x98):对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用
t1.cpp:(.text+0xc0):对‘cv::waitKey(int)’未定义的引用
/tmp/ccYN8HAH.o:在函数‘cv::String::String(char const*)’中:
t1.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x54):对‘cv::String::allocate(unsigned long)’未定义的引用
/tmp/ccYN8HAH.o:在函数‘cv::String::~String()’中:
t1.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14):对‘cv::String::deallocate()’未定义的引用
/tmp/ccYN8HAH.o:在函数‘cv::String::operator=(cv::String const&)’中:
t1.cpp:(.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x28):对‘cv::String::deallocate()’未定义的引用
/tmp/ccYN8HAH.o:在函数‘cv::Mat::~Mat()’中:
t1.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39):对‘cv::fastFree(void*)’未定义的引用
/tmp/ccYN8HAH.o:在函数‘cv::Mat::release()’中:
t1.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x4b):对‘cv::Mat::deallocate()’未定义的引用
collect2: error: ld returned 1 exit status

源代码是这样的:

#include<opencv2/opencv.hpp>
using namespace cv;
int main(){Mat srcImg=imread("1.jpeg");imshow("hello",srcImg);waitKey(0);return 0;
}

查了一下原因,可能是之前cmake的时候没有修改CMakeLists.txt的部分内容,具体原因暂时不清楚;但是修改后重新cmake一遍比较费时间(主要是电脑菜),所以选择了另一种方式:
g++ t1.cpp -o t1 `pkg-config --libs --cflags opencv`
注意,`是键盘上数字1左边那个键的英文符号;
出现上述错误主要是编译时找不到静态链接库,所以要在命令中添加上依赖,如果没有pkg-config命令,那就先解决这个问题,比如安装一下pkg-config

然后就编译成功了,运行./t1之后就可以看到黑洞了:
在这里插入图片描述
只需要敲一条命令就可以看到黑洞,比那些用望远镜才能看到黑洞的不知道高级到哪里去了(手动滑稽。。。)

当然,最后还得配置一下VScode中的c++,修改一下launch.json中的参数应该就行了,easy.

后续-安装opencv_contrib

时隔三天,发现之前没有安装对应的contrib组件(包含人脸识别、立体匹配等技术,具体可参考https://docs.opencv.org/3.4.0/files.html下的opencv_contrib目录),于是打算重新安装一下contrib组件,要不然没法调用一些功能。

安装步骤

不用删掉之前安装在/usr/local/下的文件,如果之前下载的源文件还在的话,下载对应的contrib源文件到之前的opencv目录下。进入build目录(没有的话就创建一个),开始cmake

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_OPENMP=OFF -D BUILD_opencv_xfeatures2d=OFF -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.0/modules ..

相比于之前,多了个参数OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.0/modules,版本号请根据实际情况进行修改。

请注意,上面的命令还有个参数-D BUILD_opencv_xfeatures2d=OFF,这是因为之前我编译完进行make的时候,总是会报错:opencv2/xfeatures2d/cuda.hpp:No such file or directory;但是在contrib源文件的opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d/下确实存在cuda.hppnonfree.hpp,真正原因在于我没有安装CUDA,所以无法编译需要cuda支持的部分文件,所以加了参数-D BUILD_opencv_xfeatures2d=OFF

(搜遍全网才在github上找到了唯一的上述解决方法,https://github.com/opencv/opencv_contrib/issues/1131)

接下来就和之前的命令一样了:

make -j4
sudo make install

OK,大功告成。


http://chatgpt.dhexx.cn/article/ywc36I48.shtml

相关文章

linux系统(ubuntu和centos)下分别编译和安装OpenCV

linux系统&#xff08;ubuntu和centos&#xff09;下分别编译和安装OpenCV 部署项目需要编译版的opencv环境&#xff0c;ubuntu相对简单些&#xff0c;再到云服务器的centos由于gcc版本和操作有些小不同&#xff0c;在此记录下&#xff0c;我用的是3.4.14版本&#xff0c;其他…

Centos 7下安装OpenCV 3.4.12

1. 下载OpenCV OpenCV – 3.4.12下载 解压后进入目录并创建build目录 unzip opencv-3.4.12.zip cd opencv-3.4.12 mkdir build2. 安装预编译环境 sudo yum -y install epel-release sudo yum -y install git gcc gcc-c cmake3 sudo yum -y install gtk2-devel sudo yum ins…

centos 上 opencv4.5.0安装

原文&#xff1a;https://blog.hwg1998.com/blog/97 操作系统&#xff1a;Linux version 4.18.0-240.22.1.el8_3.x86_64 编译器&#xff1a;gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) cmake&#xff1a;3.11.4 make&#xff1a;GNU Make 4.2.1 opencv&#xff1a;4.5.0 …

CentOS 上安装opencv

系统&#xff1a;Centos 6.5 从github或者opencv的官网下载opencv库&#xff1b; github下载链接&#xff1a;https://github.com/Itseez/opencv.git 1、安装依赖包(很重要&#xff09; yum install cmake gcc gcc-c gtk-devel gimp-devel gimp-devel-tools gimp-help-browser …

Linux Centos系统OpenCV安装方法

为了熟悉一下linux下C&#xff0c;准备通过将以前所写项目由windows移植到linux下&#xff0c;首先配置环境&#xff0c;这个还挺繁琐&#xff0c;出错挺多的&#xff0c;现在记录一下。 系统&#xff1a;Centos 6.5 最后版本 OpenCV: 2.4.3 1、安装依赖包(很重要&#xff0…

OpenCV下载和安装(包含所有平台)!

在 OpenCV 官方网站可以下载最新的且完整的源码以及大部分的 release 版本源码。 安装 现在&#xff0c;OpenCV 使用 Git 作为版本管理工具&#xff0c;使用 Cmake 来构建工程。 在早些时候&#xff0c;OpenCV 开发者使用 Subversion 作为版本管理工具以及 automake 来构建工…

linux下载opencv

首先和自己在github下载的opencv-4.7和opencv_contrib-4.7.0同级建一个build文件sudo apt install cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libti…

Centos 7 Opencv安装使用

安装 安装步骤 opencv安装参考opencv安装版本问题&#xff1a;opencv3.16/17编译一直报错&#xff0c;后续编译4.5成功依赖问题&#xff1a;如果依赖安装完&#xff0c;opencv make时仍然发现不了GTK2.0/3.0, 或者libpng等&#xff0c;可以查看这些包实际的pkg-config 的配置文…

OpenCV的下载、安装和配置

第一步&#xff1a;下载和安装OpenCV SDK&#xff1a; 不同版本之间只有第五步--链接库的配置不同&#xff0c;把对应的版本号&#xff08;如OpenCV4.6.0的460改成自己对应的版本号就可以了&#xff09;。 首先进入官网Home - OpenCV&#xff0c;界面如图1.1 图 1.1 点击Lib…

Linux服务器上如何安装OpenCV的库?

Linux上安装OpenCV其实挺简单的。对于Python来说&#xff0c;可以直接使用pip进行安装&#xff0c;如&#xff1a; pip3 install opencv-python 当然&#xff0c;如果你是想在C或者Java内作为外部包使用&#xff0c;你可以考虑编译安装。 安装依赖 首先是依赖安装问题&#…

超详细的CentOS7.4下载与图文安装

一、CentOS7.4下载 官网下载页面地址&#xff1a;Index of / 如果觉得下载比较繁琐&#xff0c;我已经提供了CentOS7.4的安装包: 链接&#xff1a;https://pan.baidu.com/s/1cRgNfZ5REf4LQMIyl5K3hQ 提取码&#xff1a;lp6q 1、进入CentOS下载官网&#xff0c;找到Cent…

Centos7 下安装OpenCV 3.4.6

Centos7 下安装OpenCV 3.4.6 1. 参考资料2. 下载和安装必须的包2.1 安装cmake2.2 安装build-essential2.3 gtk2.0安装2.4 pkg-config 安装2.5 ffmpeg组件安装2.6 安装opencv其他依赖项 3. 下载和安装opencv3.1 下载源码并编译安装3.2 opencv配置与加载动态库 4. OpenCV测试 1. …

centos7安装和编译opencv4.5.0

目录 一、centos7的安装 二、gcc的安装 三、cmake的安装 四、Opencv4.5.0的安装 五、使用Opencv编写C图像处理程序 六、部署 一、centos7的安装 建议使用最小安装方法&#xff0c;安装出来的操作系统比较干净&#xff0c;参考教程 https://blog.csdn.net/u010476739/art…

个人使用:Windows下 OpenCV 的下载安装(2021.12.4详细)

一、下载OpenCV   到OpenCV官网Release(发布)板块下载OpenCV-4.5.4 Windows。 下载后是这样的 然后双击他&#xff0c;解压&#xff0c;就是大佬们说的安装&#xff0c;实质就是解压一下&#xff0c;解压完出来一个文件夹&#xff0c;其他什么也没发生。你把这个文件夹放在哪…

彻底删除aws亚马逊服务器使之不再计费

彻底删除aws亚马逊服务器使之不再计费 打开你的aws中的esc 选中之后&#xff0c;选择 stop, 之后&#xff0c;再 terminate 然后点击左侧的volume那查看实例, 如果有 先detach volume, 分离实例和卷。 然后在Action上选择delete volume 彻底删除卷。 删除卷之后&#xff0c;ter…

WinSCP 连接 AWS 服务器

WinSCP 连接 AWS 服务器 前言步骤 前言 基于目前官网上似乎没有 WinSCP 连接教程&#xff0c;所以这里简单记录一下希望对喜欢 WinSCP 的小伙伴有帮助 步骤 点击“高级” “验证”中选择自己的私钥文件&#xff08;.pem&#xff09;, WinSCP 会自己根据这个私钥文件生成.ppk…

【aws】专有网络配置

前言 aws服务器相对于其它公有云来说&#xff0c;相对比较稳定&#xff0c;本文记录一次aws的专有网络的设置方法&#xff0c;望大家指点。 二、配置 1、配置VPC 2、配置子网&#xff0c;根据需求要配置两个子网&#xff0c;一个是配置弹性ip上网&#xff0c;一个是nat上网。 …

centos云服务器亚马逊,亚马逊云服务器AWS安装CentOS

亚马逊云服务器默认创建的实例&#xff0c;在停止之后再启动的情况下&#xff0c;IP会发生改变。所以我们最好先创建一个弹性IP&#xff0c;即EIP&#xff0c;不过我也不清楚这个费用。 1、按如图操作创建一个弹性IP&#xff0c;弹性IP创建之后可以随便绑定到该region下的实例 …

AWS白皮书 – 安全性

本文讲解AWS良好架构框架&#xff08;AWS Well-Architected Framework&#xff09;里其中五大支柱之一&#xff1a;安全性&#xff08;Security&#xff09; 设计原则 在所有层面考虑安全性&#xff1a;除了要在传统的防火墙上考虑安全性之外&#xff0c;我们还需要在每个、安…

aws云服务器怎么使用_使用AWS的无服务器URL缩短器

aws云服务器怎么使用 Are you sick of sending long cumbersome URL via mails or chats which looks messy. URL shortener is a great way of managing such long URLs and whats more amazing about it that you can make it in-house with a Serverless approach which low…