【亲测可行】ubuntu下载安装c++版opencv4.7.0和4.5.0 & 安装opencv4.5.0报错及解决方法

文章目录

🌕系统配置

文心一言说:

cpp 复制代码
opencv4.5.0和opencv4.7.0至少为支持C++11或更高版本的编译器
cpp 复制代码
C++版OpenCV 4.5.0通常支持GCC 5.4及以上版本和G++ 5.4及以上版本的编译器
C++版OpenCV 4.7.0通常支持GCC 7及以上版本和G++ 7及以上版本的编译器

我的配置

cpp 复制代码
ubuntu 22.04
gcc和g++都是12.3.0

🌕打开终端,退出anacoda激活环境(如果有的话)

如果是在conda激活环境中,要首先退出激活环境。如果没有安装anaconda,忽略此步骤。

python 复制代码
conda deactivate

🌕安装依赖

🌙安装g++, cmake, make, wget, unzip,若已安装,此步跳过

python 复制代码
sudo apt install -y g++
sudo apt install -y cmake
sudo apt install -y make
sudo apt install -y wget unzip

🌙安装opencv依赖的库

python 复制代码
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

🌙安装可选依赖

python 复制代码
# streamer支持
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev
                        

🌕下载安装OpenCV 4.7.0版本

🌙github下载方式

bash 复制代码
# 安装4.7.0版本
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.7.0.zip

下载最新版本的方法

bash 复制代码
# 安装最新版本
wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip

🌙官网下载方式

https://opencv.org/releases/

点击source

🌙移动下载的opencv包到要安装的位置

bash 复制代码
mv /home/Downloads /home/bruce/software

🌙解压并安装

bash 复制代码
cd /home/bruce/software
bash 复制代码
unzip opencv.zip

进入解压后的包

bash 复制代码
cd opencv-4.5.0/
bash 复制代码
mkdir build
bash 复制代码
cd build/

使用cmake配置opencv

bash 复制代码
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..

说明:

-D OPENCV_GENERATE_PKGCONFIG=YES

OpenCV4以上默认不使用pkg-config,该编译选项开启生成opencv4.pc文件,支持pkg-config功能

bash 复制代码
# 查看线程数
nproc

我的是24,所以编译的进程数就填24,开始编译

bash 复制代码
make -j24

用make进行安装

bash 复制代码
sudo make install

默认安装路径为:

bash 复制代码
/usr/local/bin - executable files
/usr/local/lib - libraries (.so)
/usr/local/cmake/opencv4 - cmake package
/usr/local/include/opencv4 - headers
/usr/local/share/opencv4 - other files (e.g. trained cascades in XML format)

🌕配置pkg-config环境

opencv4.pc文件的默认路径:/usr/local/lib/pkgconfig/opencv4.pc

若此目录下没有,可以使用以下命令搜索:

bash 复制代码
sudo find / -iname opencv4.pc
bash 复制代码
sudo vim /etc/profile.d/pkgconfig.sh

按i进入插入模式,然后添加如下内容:

bash 复制代码
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

按esc,输入:wq 保存后退出。

激活

bash 复制代码
source /etc/profile

验证是否成功:

bash 复制代码
pkg-config --libs opencv4

🌕配置动态库环境

打开文件(可能为空文件):

bash 复制代码
sudo vim /etc/ld.so.conf.d/opencv4.conf

在该文件末尾加上OpenCV的lib路径,保存退出:

bash 复制代码
/usr/local/lib

使配置的路径生效:

bash 复制代码
sudo ldconfig

🌕测试OpenCV

cd 到/opencv/samples/cpp/example_cmake目录下,依次执行以下命令:

进入你的opencv解压目录,然后进入如下的目录

bash 复制代码
cmake .
make
./opencv_example

运行之后如果电脑有摄像头,就会弹出摄像头

如果没有摄像头弹出如下内容也是对的:

🌕其它:解决安装OpenCV 4.5.0碰见的问题和解决方法


报错显示gapi_async_test.cpp这里面的代码找不到

这个错误信息指出在编译 OpenCV 4.5.0 的 gapi_async_test.cpp 文件时遇到了一个问题,具体是 std::this_thread::sleep_for 函数无法识别。这通常是因为缺少必要的头文件或者编译器标准设置不正确导致的。

std::this_thread::sleep_for 是 C++11 标准中引入的一个功能,它位于 头文件中。错误提示表明编译器没有找到这个函数,很可能是因为没有包含 头文件。

点击保存。

bash 复制代码
make clean  # 可选,但推荐,以清除旧的构建文件 
bash 复制代码
# 查看线程数
nproc

我的是24,所以编译的进程数就填24

bash 复制代码
make -j24

!在这里插入图片描述(https://i-blog.csdnimg.cn/direct/242f5e0c1af1449084c75ea7b476979f.png

🌕其它:安装失败重新编译的方法:

删除build文件夹下的文件CMakeCache.txt,重新编译即可

bash 复制代码
rm CMakeCache.txt

清除旧的构建文件

bash 复制代码
make clean  

🌕参考链接

Ubuntu 20.04搭建OpenCV 4.5.0 & C++环境

Ubuntu 安装 OpenCV 4.5.5

相关推荐
jieyucx19 分钟前
【系统安全铁律】解密 Linux 权限三色数字密码:chmod 最小化赋权与生产环境避坑指南
linux·安全·系统安全·权限·chmod·777
AOwhisky1 小时前
Linux(CentOS)系统管理入门笔记(第四期)——文件系统(下篇):文件与目录操作实战——cpmvmkdirrmln
linux·运维·笔记·centos·云计算·文件系统
nianniannnn1 小时前
c++复习自存--标准模板库STL
开发语言·c++·windows
努力努力再努力wz1 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
岑梓铭2 小时前
考研408《操作系统》复习笔记,第四章《4.2.2 文件操作、文件共享、文件保护》
linux·考研·操作系统·文件系统·408
Robot_Nav2 小时前
C++ 面试常问问题汇总:基础语法、面向对象、STL、多线程与设计模式
c++·设计模式·面试
Mr.HeBoYan2 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk
盐焗鹌鹑蛋2 小时前
【C++】二叉搜索树
c++
哎呦,帅小伙哦2 小时前
C++工程实战: 预处理宏、宏重定义避坑、LOG_TAG业务实践与__COUNTER__深度解析
c++
IVVi0jToe2 小时前
高效C++线程池设计与实现
java·c++·安全