OpenCV3编译

opencv下载源码

1.去官网下载opencv,

在本教程中选用的时opencv3.4.0,其他版本的配置方法异曲同工。
下载链接http://opencv.org/releases.html,选择sources版本

2.不愿意下载,已提供好

opencv3.3源码: https://pan.baidu.com/s/1OA_DyNxDvFnX3X1H9_HoZw 提取码:f8hc

3.git clone

git clone https://github.com/opencv/opencv.git

解压下载下来的zip包

unzip opencv-3.4.0.zip

安装包

安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令

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

sudo apt update
sudo apt upgrade
sudo apt install build-essential cmake unzip pkg-config
sudo apt install libjpeg-dev libpng-dev libtiff-dev
sudo apt install libavcodec-dev libavformat-dev libswscale-dev
sudo apt install libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libgtk-3-dev
sudo apt install libblas-dev liblapack-dev gfortran
sudo apt install python3-dev
==========================

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 libtiff5-dev libdc1394-22-dev      
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev       
sudo apt-get install libatlas-base-dev gfortran        
sudo apt-get install ffmpeg

安装完cmake之后执行命令 ,创建编译文件夹,不创建的会提示(如下图)

In-source builds are not allowed.

mkdir build
cd build

cmake一下

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make  -j8
sudo make install

sudo make install 一定要加sudo权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加到路径

sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到

sudo gedit /etc/ld.so.conf.d/opencv.conf 

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加

/usr/local/lib  

在这里插入图片描述

10.执行如下命令使得刚才的配置路径生效

sudo ldconfig  

opencv切分支

git branch 
git clone https://github.com/opencv/opencv.git
切换为某个tag
git checkout -b 3.4.6

git branch

opencv3(resize)

opencv3

sample

打开文件夹“…/opencv-4.1.0/opencv/sources/samples”。可以发现包含各种语言的示例,这里针对cpp。
在这里插入图片描述

Samples文件夹:
• android: Android 平台的范例。既有完全是 Java 的工程,也有完全是 C++ 的工程,也有更为常见的 Java 与 C++ 共存的工程。

• cpp: 包含丰富的 C++ 案例,后面将详细介绍。

• data: 示例程序要用到的数据

• directx: Directx3D (d3d) 是微软的私有三维图像 API,属于DirectX中的3D显示模块,这个文件夹中的范例覆盖了 d3d9、d3d10、d3d11。

• dnn: 与深度神经网络算法相关的范例,包含C++与Python实现。

• gpu: 利用 cuda 加速的范例。

• hal: Hardware Acceleration Layer 硬件加速层。

• java: 支持 Java 语言绑定,演示如何使用 Java 版本的 OpenCV。

• opencl:Open Computing Language,开放计算语言,是一个为异构平台编写程序的框架,着重于运算。

• opengl: Open Graphics Library,用于生成二维、三维图像,着重于渲染。

• openvx: 嵌入式开发时为了兼容各个底层硬件定义的统一接口。

注意:opencl、opengl、openvx都是跨平台标准,而且都是开源的,由同一个组织Khronos Group开发并维护。

在这里插入图片描述

 python: OpenCV 3 官方支持 Python 语言绑定,因此这里演示使用 Python 2 版本的范例。

• tapi: tapi 是OpenCV 3 的一个新特性,使用 cv::UMat 替代cv::Mat,实现 CPU 和 GPU 的运算使用统一的接口,不再需要显式地在 CPU 和 GPU 之间传递数据,方便开发人员。

• va_intel:不知道啥东西?好像与显示图片有关。

• winrt: Windows RT 平台的范例,开发语言是微软的 C++ “方言”。

• wp8: 针对在Windows Phone 8系统下的库。
cpp文件夹:
• tutorial_code/: opencv教程代码

• 3calibration.cpp: 同时标定三台水平放置的相机。

• bagofwords_classification.cpp: 使用图像检测实现简易的图像搜索功能。

• bgfg_gmg.cpp: 演示GMG 背景检测算法的使用方式。

• bgfg_segm.cpp: 演示高斯混合背景检测算法的使用方式。

• brief_match_test.cpp: 使用 BRIEF 特征值来匹配两张图像。

• build3dmodel.cpp: 演示如何使用基础矩阵和特征值来创建三维模型。

• calibration.cpp: 完整的多用途标定程序。

• calibration_artificial.cpp: 在程序中生成一个虚拟的相机,并进行标定。

• camshiftdemo.cpp: 读取实时的摄像头数据,并演示基于均值偏移算法的视频跟踪。

• chamfer.cpp: 使用Chamfer 算法匹配两副边缘图像。

• cloning_demo.cpp: 命令行模式的图像克隆。

• cloning_gui.cpp: 图形界面交互的图像克隆。

• connected_components.cpp: 查找并绘制图像中的连通区域。

• contours2.cpp: 查找并绘制图像中的轮廓。

• convexhull.cpp: 查找并绘制由点的集合组成的凸包。

• cout_mat.cpp: 使用cout 来输出各种格式化的 Mat 对象。

• create_mask.cpp: 演示如何创建黑白掩码图像。

• dbt_face_detection.cpp: 基于检测的人脸跟踪代码。

• delaunay2.cpp: 通过鼠标交互式地生成 Delaunay 三角形。

• demhist.cpp: 演示直方图的用法。

• descriptor_extractor_matcher.cpp: 演示 features2d 检测框架的用法。

• detection_based_tracker_sample.cpp: 与 dbt_face_detection.cpp 类似。

• detector_descriptor_evaluation.cpp: 评估各种特征检测器和描述子。

•detector_descriptor_matcher_evaluation.cpp:评估各种特征检测器和匹配器。

• dft.cpp: 演示一幅图像的离散傅里叶变换。

• distrans.cpp: 显示边缘图像的距离变换值。

• drawing.cpp: 演示绘画和文字显示功能。

• edge.cpp: 演示Canny 边缘检测。

• em.cpp: 对随机生成的数据点进行 EM 聚类。

• fabmap_sample.cpp: 演示 FAB-MAP 图像检索算法。

• facerec_demo.cpp: 人脸识别。

• fback.cpp: 实时的Farneback 光流跟踪。

• ffilldemo.cpp: 演示 floodFill() 像素填充算法。

• filestorage.cpp: 演示序列化到外部文件,如yml、xml等。

• fitellipse.cpp: 将轮廓点匹配到椭圆。

• freak_demo.cpp: 演示 FREAK 特征值的用法。

• gencolors.cpp: 演示 generateColors()。

• generic_descriptor_match.cpp: 基于 SURF 的两幅图像间的匹配。

• grabcut.cpp: 演示GrabCut 分割算法。

• houghcircles.cpp: 用霍夫算法检测圆。

• houghlines.cpp: 用霍夫算法检测直线。

• hybridtrackingsample.cpp: 混合跟踪算法(Hybrid Tracker)的演示。

• image.cpp: 来回转换cv::Mat 和 IplImage。

• image_alignment.cpp: 演示 findTransformECC() 函数。

• image_sequence.cpp: 使用 VideoCapture 对象读取序列帧。

• imagelist_creator.cpp: 创建图像列表到 xml 文件。

• inpaint.cpp: 使用鼠标交互地进行图像修补。

• intelperc_capture.cpp: Intel 感知计算设备相关的函数。

• kalman.cpp: 使用卡尔曼滤波进行二维跟踪。

• kmeans.cpp: Kmeans 聚类算法的演示。

• laplace.cpp: 拉普拉斯边缘检测。

• latentsvm_multidetect.cpp: latentSVM 检测器。

• letter_recog.cpp: 字母识别。

• linemod.cpp: 基于OpenNI 的体感设备应用。

• lkdemo.cpp: 演示Lukas-Kanade光流法。

• logpolar_bsm.cpp: 演示 LogPolar 盲点模型。

• lsd_lines.cpp: LSD 线段检测。

• matcher_simple.cpp: SURF 特征检测。

• matching_to_many_images.cpp: 一对多的特征检测。

• meanshift_segmentation.cpp: 演示基于均值漂移的色彩分割函数——meanShiftSegmentation()

• minarea.cpp: 寻找最小包围盒、包围圆

• morphology2.cpp: 形态学图像处理

• npr_demo.cpp: 演示各种非真实感渲染效果

• opencv_version.cpp: 输出 OpenCV 库的版本号

• openni_capture.cpp: 演示 OpenNI 相关的体感设备

• pca.cpp: 基于 PCA 的人脸识别

• peopledetect.cpp: 基于 cascade 或 hog 进行物体(人)检测

• phase_corr.cpp: 演示 phaseCorrelate() 函数

• points_classifier.cpp: 演示各种机器学习算法

• segment_objects.cpp: 实时地在视频或相机画面中检测前景物体

• select3dobj.cpp:在一个有标定棋盘的桌子上,使用3D Box标记一个对象,在所有序列帧中,只要照相机可以看到棋盘,就可以跟踪对象,并用Box分割对象

• shape_example.cpp: 比较并检索形状

• shape_transformation.cpp: 用 SURF 特征值检测形状并进行变换

• squares.cpp: 检测图像中的方块形状。

• starter_imagelist.cpp: 加载一个ImageList(由imagelist_creator.cpp产生)

• stereo_calib.cpp: 双目视觉的标定

• stereo_match.cpp: 计算左右视觉的图像的差异,生成点云文件。

• stitching.cpp: 演示图像拼接算法。

• stitching_detailed.cpp: 演示更多参数的图像拼接算法。

• train_HOG.cpp: 训练 HOG 分类器

• tree_engine.cpp: 演示如何使用不同的决策树和森林包括Boosting和随机树

• videostab.cpp: 演示 videostab 中各个参数的用法。

• watershed.cpp: 演示著名的分水岭图像分割算法。

增加cmake-gui 编译opencv(23.8.3)

Ubuntu18.04中用CMake-gui安装OpenCV4.1.0

参考资料

  1. Ubuntu16.04编译OpenCV3.4
  2. Opencv+Ubuntu编译安装
  3. ubuntu16.04 安装 opencv3.3.0 源代码编译
  4. Ubuntu16.04 安装OpenCV并编译
  5. FFmpeg学习笔记–Ubuntu20.04编译安装FFmpeg、FFplay和FFprobe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值