史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程
准备工作
原材料
- Ubuntu 系统(非必须,Windows 也可以,主要是 Ubuntu 适合编译)
- OpenCV 3.4.1 压缩包
- OpenCV contrib 3.4.1 压缩包
- MinGW(Windows 上运行 GCC)
版本信息
- GCC 版本 7.5.0
- G++ 版本 7.5.0
- OpenCV 版本 3.4.1
- Cmake 版本 3.10
编译组件和依赖包的安装(Windows 请跳过)
sudo apt install -y build-essential ccache cmake doxygen g++ gcc git libavcodec-dev libavformat-dev libavresample-dev libdc1394-22-dev libgphoto2-dev libgtk2.0-dev libjasper-dev libjpeg-dev libjpeg.dev libopenblas-base libopenblas-dev libpng-dev libswscale-dev libtbb2 libtbb-dev libtiff-dev libtiff5.dev libv4l-dev libvtk5-dev libvtk6-dev openjdk-8-jdk pkg-config pylint python-dev python-numpy qt5-default
下载并解压 OpenCV 和 OpenCV Contrib
# Ubuntu 命令行 和 Ubuntu 桌面
wget https://github.com/opencv/opencv/archive/3.4.1.zip
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/3.4.1.zip
unzip opencv-3.4.1.zip
unzip opencv_contrib-3.4.1.zip
# Windows 和 Ubuntu 桌面端直接下载解压就好了

编译 OpenCV 源码
Ubuntu 命令行
cmake 命令行编译安装
# 新建编译文件夹
mkdir opencv-3.4.1-build
# 通过 cd 命令进入编译文件夹
cd opencv-3.4.1-build
# CMAKE_INSTALL_PREFIX 是 OpenCV 的安装位置
# OPENCV_EXTRA_MODULES_PATH 是 opencv_contrib-3.4.1 的 modules 文件夹
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/ahtelek/OpenCV/opencv_contrib-3.4.1/modules/ -D BUILD_TIFF=ON ..
# make 编译,也可以使用 make -j、make -j8、make -j16 等命令速度会稍快一些
sudo make
# 安装
sudo make install


Ubuntu 桌面端和 Windows
cmake-gui + cmake 编译安装
- 选择好 OpenCV 源码和 OpenCV 编译文件夹
- 就可以选择 Configure

- 选择 MinGW Makefiles
- 复选框选择第二个

- 这是 MinGW 中 bin 目录下的 gcc.exe 和 g++.exe 文件
- 选择 Finish

- 等他跑完

- 搜索栏搜索 extra
- 选择 opencv-contrib 下的 modules
- 再点击 Configure,配置完成点击 Generate。
- 一直到显示 Configuring done Generating done


- Win+R cmd cd 到编译文件夹里
- 输入 MinGW32-make 开始编译,也可以使用 make -j、make -j8、make -j16 等命令速度会稍快一些
- 编译完成后,再输入 MinGW32-make install 进行安装



- 编译太慢了就不展示了(下面展示的是 Ubuntu 的)


用别人已经编译好的
GitHub 仓库中有人提供已经编译好的 OpenCV,可以通过 Configuration 看到用了什么编译器、操作系统、cmake 版本
https://github.com/huihut/opencv-mingw-build


史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程的更多相关文章
- 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站
如何在IIS上发布网站 本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...
- ubuntu系统编译安装OpenCV 4.4
内容转载自我的博客 目录 前言 1. 下载源码 2. 安装各种依赖 3. 开始编译安装 4. 配置C++开发环境 5. 程序执行时加载动态库*.so 6. 测试cpp文件 7. 配置python3的o ...
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头[转]
主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头
主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...
- 在Windows与Ubuntu上使用tensorboard的不同点
(1)Ubuntu下使用TensorBoard如官网所述即可.https://www.tensorflow.org/programmers_guide/summaries_and_tensorboar ...
- ARM入门实践(一)----Mini6410上最简单的LED点灯裸机程序
Mini6410上最简单的LED点灯裸机程序 : 实验环境: 根据友善教程,要用ADS,据说现在都不用这个了,但是为了打开友善给的mcp工程,就下了一个,Win7下弄上兼容模式和管理员权限,再下一个S ...
- Ubuntu上安装Minecraft服务器
Minecraft由于其独特的魅力吸引了很多玩家.不过游戏的乐趣只有在和朋友一起玩的时候才最有意思,所以很早以前我就想建设自己的服务器.但由于专业知识欠缺,没有实现. 最近接触了Linux服务器,所以 ...
- Ubuntu上安装QQ2015
先不卖关子直接上图:Ubuntu 14.04.5 LTS Deb包下载地址: http://www.longene.org/download/WineQQ7.8-20151109-Longene.de ...
- Ubuntu 16.04 安装OpenCV 3.4.3
cmake过程中可能遇到的问题:1.如果网络不好,出现ippicv_linux_20151201.tgz无法在终端下载的情况,则可以先单独下载 ippicv_linux_20151201.tgz之后, ...
- 史上最简单,一步集成侧滑(删除)菜单,高仿QQ、IOS。
重要的话 开头说,not for the RecyclerView or ListView, for the Any ViewGroup. 本控件不依赖任何父布局,不是针对 RecyclerView. ...
随机推荐
- 分享个好东西两行前端代码搞定bilibili链接转视频!
只需要在您的要解析B站视频的页面的</body>前面加上下面两行代码即可,脚本会在客户端浏览器里解析container所匹配到的容器里的B站超链接 (如果不是外围有a标签的超链接只是纯粹的 ...
- Apple Low Power DisplayPort(ALP_DP)学习随笔
edp是PC内置显示接口的主流标准,主用于笔记本电脑或PAD上,普遍用于中大尺寸PANEL. 系统架构如下: apple 的ALP_DP 源于edp 1.4(edp1.4又是源于DP V1.2a版本) ...
- .Net Core&RabbitMQ限制循环消费
前言 当消费者端接收消息处理业务时,如果出现异常或是拒收消息将消息又变更为等待投递再次推送给消费者,这样一来,则形成循环的条件. 循环场景 生产者发送100条消息到RabbitMQ中,消费者设定读取到 ...
- .net core Blazor+自定义日志提供器实现实时日志查看器
场景 我们经常远程连接服务器去查看日志,比较麻烦,如果直接访问项目的某个页面就能实时查看日志就比较奈斯了,花了1天研究了下.net core 日志的原理,结合blazor实现了基本效果. 实现原理 自 ...
- Java多线程(7):JUC(上)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 前面把线程相关的生命周期.关键字.线程池(ThreadPool).ThreadLocal.CAS.锁和AQS都讲完了,现在就剩下怎么来用多线程了 ...
- 【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程
个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1.前言 2.蓝牙综合介绍 3.精华文章汇总 4.结语 1.前言 大家好,我是董哥 ...
- Vue实现离开页面二次确认
在项目开发中遇到用户编辑内容后未保存推出编辑页面时需要提示用户"当前数据未保存,是否退出",实际开发中利用window.onbeforeunload方法与vue.$on方法在upd ...
- Seata 1.5.2 源码学习(Client端)
在上一篇中通过阅读Seata服务端的代码,我们了解到TC是如何处理来自客户端的请求的,今天这一篇一起来了解一下客户端是如何处理TC发过来的请求的.要想搞清楚这一点,还得从GlobalTransacti ...
- [排序算法] 快速排序 (C++) (含三种写法)
快速排序解释 快速排序 Quick Sort 与归并排序一样,也是典型的分治法的应用. (如果有对 归并排序还不了解的童鞋,可以看看这里哟~ 归并排序) 快速排序的分治模式 1.选取基准值,获取划分位 ...
- phpexcel 上传
<?php require_once(ROOTPATH . "inc/PHPExcel/PHPExcel.class.php");//PHPExcel//获取数据 $objP ...