在Linux下安装C++的OpenCV 3

最近在看《学习OpenCV3》这本书,所以记录下我在ubuntu16.4下搭建C++版本OpenCV 3.4.5的过程。首先请确保cuda,gcc, g++都安装好了,我这里是cuda 10.0,gcc-4.9.4和gcc-5.5.0,它们之间的版本只要是配套的应该就没问题,我原本是按照Francesco Piscani油管视频:OpenCV C++ on Linux Tutorial 1 - OpenCV 3.2 Installation on Ubuntu 16.04 进行安装OpenCV 3.1.0 ,但是编译老是报错,后面怀疑是自己用的cuda版本有点新,而以前的Opencv 3.1.0有点跟不上配置,但之后就按照Davidhwj的 linux安装及配置c++的opencv库 进行配置成功了。

 

安装步骤:

1. 更新系统源

sudo apt-get update

 

2. 安装依赖项

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev


3. 下载OpenCV 3.4.5

官网下载地址:https://opencv.org/releases/page

之后将其解压至根目录下,我这里是home/下。之后创建release文件夹:

cd opencv-3.4.5

~/opencv-3.4.5$ mkdir release

 

4. 设置cmake参数

~/opencv-3.4.5/$ cd release

~/opencv-3.4.5/release/$ sudo cmake

~/opencv-3.4.5/release/$ sudo cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

或者使用默认安装设定:

~/opencv-3.4.5/release/$ sudo cmake ..

 

在cmake过程中常会报错ippicv_2019_lnx_intel64_general_20180723.tgz下载超时,解决办法就是到官方Github源码里下载该压缩包,之后打开opencv-3.4.5/3rdparty/ippicv/ippicv.cmake文件,然后复制下图中选中的命名后缀:

 

在opencv-3.4.5/3rdparty/ippicv/下创建文件downloads,然后在downloads下创建文件名为linux-32e315a5b106a7b89dbed51c28f8120a48b368b4,并将之前下载的ippicv压缩包放入该文件夹下,如下图所示:

 

最后再次打开opencv-3.4.5/3rdparty/ippicv/ippicv.cmake文件修改原来网络压缩包下载地址为手动下载好压缩包的文件地址,如下图所示:

现在重新cmake就能成功了!

 

5. 编译OpenCV

~/opencv-3.4.5/release/$ sudo make

~/opencv-3.4.5/release/$  sudo make install

 

6. 配置环境变量

~/opencv-3.4.5/release/$  sudo gedit /etc/ld.so.conf.d/opencv.conf

在文件内添加一行:/usr/local/lib

 

~/opencv-3.4.5/release/$ sudo ldconfig # 更新系统的共享链接库

sudo gedit /etc/bash.bashrc

在bashrc里末尾加入以下两行:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export LD_LIBRARY_PATH=/home/lp/soft/opencv-3.4.5/release/lib:$LD_LIBRARY_PATH

 

# 保存bashrc后,使其生效:

~/opencv-3.4.5/release/$ source /etc/bash.bashrc

 

7. 测试OpenCV安装是否正确

在opencv-3.4.5/samples/cpp下创建一个测试代码并放入一张图片如下:

 

用下面的命令创建测试代码:

~/opencv-3.4.5/samples/cpp$ nano ex2_1.cpp

复制代码
#include <opencv2/opencv.hpp> //Include file for every supported OpenCV function

int main( int argc, char** argv ) {

    cv::Mat imgOriginal;

    imgOriginal = cv::imread("building.png"); 

    //cv::Mat img = cv::imread("building.jpg");
    if( imgOriginal.empty() ) return -1;
    cv::namedWindow( "Example1", cv::WINDOW_AUTOSIZE );
    cv::imshow( "Example1", imgOriginal );
    cv::waitKey( 0 );
    cv::destroyWindow( "Example1" );
    return 0;
}
复制代码

 g++运行下面的命令:

~/opencv-3.4.5/samples/cpp$ g++ ex2_1.cpp -o ex2_1 `pkg-config opencv --cflags --libs`

~/opencv-3.4.5/samples/cpp$ ./ex2_1

这是如果弹出图片,说明OpenCV安装没问题,可以正常使用了。

 

posted @   Alvin_Ai  阅读(4888)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示