opencv2.4.10+ubuntu18.04 安装配置(采坑指南)_ubuntu18.04安装opencv2-程序员宅基地

技术标签: 环境配置  c++  ffmpeg  opencv  

我的配置:

ubuntu18.04
gcc7.5.0(版本大于4.9即可)
RTX2060显卡(不影响)

大部分人需要安装不同版本的opencv,所以最好一开始就做好版本管理:
各个版本编译安装,来回切换

一、安装各种依赖:

sudo apt-get install libopencv-dev build-essential cmake git libprotobuf-dev 
sudo apt-get install libgtk2.0-dev pkg-config python-dev python-numpy
sudo apt-get install libsnappy-dev gtk+-3.0 yasm Doxygen 
sudo apt-get install libdc1394-22 libopenblas-dev liblmdb-dev 
sudo apt-get install libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev 
sudo apt-get install libjasper-dev libhdf5-serial-dev 
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxine-dev 
sudo apt-get install libgstreamer0.10-dev libgflags-dev
sudo apt-get install libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev 
sudo apt-get install libqt4-dev libfaac-dev libgoogle-glog-dev
sudo apt-get install libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev 
sudo apt-get install libtheora-dev libvorbis-dev protobuf-compiler liblapack-dev
sudo apt-get install libxvidcore-dev x264 v4l-utils unzip liblapacke-dev 
sudo apt-get install libavresample-dev libgphoto2-dev libavutil-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next 
sudo apt-get update 
sudo apt-get install ffmpeg

二、opencv编译

下载opencv代码,在opencv目录下建立build文件夹

mkdir build
cd build

重点来了!!!!!!!!!!!!!!!!!!!!!!

cmake代码

cmake -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=Release -D BUIILD_opencv_python=OFF -D WITH_CUDA=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2410 -D WITH_FFMPEG=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF ..

其中CMAKE_INSTALL_PREFIX是自定义的最终库文件位置,按需修改,方便版本管理


cmake配置是非常重要的设置,会排除很多bug,实践经验!!!

/usr/local/opencv2410是我自定义的位置,按需修改


然后编译,安装

make -j16
sudo make install

make的时候会出现报错

error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]

打开opencv-2.4.10/build/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件,删掉 -Werror=address。然后重新make

三、更改~/.bashrc

sudo gedit ~/.bashrc

在最后添加

export PATH=/home/install/opencv3.4.0/build-install/bin:$PATH
export   LD_LIBRARY_PATH=/home/install/opencv3.4.0/build-install/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/install/opencv3.4.0/build-install/lib/pkgconfig

保存退出后,source ~/.bashrc

查看opencv版本号

pkg-config --modversion opencv

结语:

如果提示缺少videodev.h,缺少videoio.h,不用管,这个报错不会导致编译失败,是别的原因

如果有其他报错的话,在这基本能找到:
OpenCV-3编译安装方法及常见错误解决(Ubuntu平台)
ubuntu18编译opencv2.4.10源码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_49805002/article/details/128253162

智能推荐

db2游标与mysql游标区别_DB2游标使用注意事项-程序员宅基地

文章浏览阅读70次。1、游标的一般使用步骤 (1)定义游标 EXEC SQL DECLARE MY_CURSOR CURSOR FOR........ (2)打开游标 EXEC SQL OPEN MY_CURSOR1、游标的一般使用步骤(1)定义游标EXEC SQL DECLARE MY_CURSOR CURSOR FOR........(2)打开游标EXEC SQL OPEN MY_CURSOR ;(3)读取游标E..._db2游标更新

正则表达式_非贪婪皮-程序员宅基地

文章浏览阅读3.1k次。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。_非贪婪皮

arcgis NoData区域去除(去除影像黑边)_arcmap栅格数据导png时nodata变黑边-程序员宅基地

文章浏览阅读8.7k次,点赞9次,收藏57次。问题描述:裁剪操作或其他一些操作后影响会出现NoData区域,在制图时不好看。如下图红色区域为NoData区域,更改Arcgis显示设置无效A:方法是ArcTools->Spatial Analyst Tools->Map Algebra->Single Output Map Algebra(就是栅格计算器).算法表达式为: Con(IsNull([raster]),0,[raster])。注意大小写其中[raster]是输入栅格名称。这个表达式的效果是将图像中N._arcmap栅格数据导png时nodata变黑边

Java中的native方法的使用_native修饰方法-程序员宅基地

文章浏览阅读7.9k次,点赞25次,收藏106次。1.关于native关键字想必读者已经了解过native关键字了。这里笔者就大致囊括一下,被native关键字修饰的方法叫做本地方法,本地方法和其它方法不一样,本地方法意味着和平台有关,因此使用了native的程序可移植性都不太高。另外native方法在JVM中运行时数据区也和其它方法不一样,它有专门的本地方法栈。native方法主要用于加载文件和动态链接库,由于Java语言无法访问操作系统底层信息(比如:底层硬件设备等),这时候就需要借助C语言来完成了。被native修饰的方法可以被C语言重写。2.使_native修饰方法

Thread类-程序员宅基地

文章浏览阅读1.3w次,点赞7次,收藏60次。 1 start方法  start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。  2 run方法  run()方法是不需要用户来调用的,当通过start方法启动一个线程之后,当线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意,继承Thread类必须重写run方法,在run方法中定义具体要..._thread类

oracle数据落地到gp,使用ora2pg迁移oracle数据到greenplum-程序员宅基地

文章浏览阅读377次。安装ora2pg条件1、perl版本5.10以上2、安装DBD::Oracle3、安装DBI4、安装DBD::Pg一、安装相关软件支持1、安装DBI#下载https://metacpan.org/release/DBI上传到服务器并解压出来DBI-1.637.tar.gz[ root@bigdata01 ~]$ lltotal 592-rw-r--r-- 1 gpadmin gpadmin 596..._ora2pg greenplum

随便推点

TypeError: rescale() got an unexpected keyword argument ‘multichannel‘_typeerror: gaussian() got an unexpected keyword ar-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏4次。运行出现错误TypeError: rescale() got an unexpected keyword argument 'multichannel'如果为 None,则假定图像是灰度(单通道)图像。否则,此参数指示数组的哪个轴对应于通道。将multichannel=True改成channel_axis=-1。scikit-image新版本已经废弃了multichannel函数。_typeerror: gaussian() got an unexpected keyword argument 'multichannel

对于Android虚拟机启动失败“The emulator process for AVD Nexus_5X_API_30 was killed”的解决方案_the emulator process for avd api_30 was killed.-程序员宅基地

文章浏览阅读8.4k次,点赞5次,收藏31次。The emulator process for AVD Nexus_5X_API_30 was killed_the emulator process for avd api_30 was killed.

swift—国际化_swiftui 怎么引用infoplist.strings-程序员宅基地

文章浏览阅读1.8k次。一、APP名称国际化第一步:如图,添加所需要的语言第二步:创建名为 InfoPlist.strings 的文件第三步:选中 InfoPlist.string,点击Localize按钮,选着以那种语言为基础。第四步:在文件中填写对应的名称(CFBundleDisplayName = “CHA”;)然后再设置->通用->语言与地区更改选过的语言查看效果。二、APP文字国际化..._swiftui 怎么引用infoplist.strings

file.exists(),file.isFile()和file.isDirectory()的区别-程序员宅基地

文章浏览阅读2.6w次,点赞34次,收藏103次。file.exists(),file.isFile()和file.isDirectory()的区别你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,M_file.exists

JavaWeb-通过表格显示数据库的信息(jsp+mysql)_javaweb数据库数据显示在表单-程序员宅基地

文章浏览阅读1.2w次,点赞14次,收藏113次。login.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head&gt_javaweb数据库数据显示在表单

异常账号检测汇总_异常登录数据集-程序员宅基地

文章浏览阅读2.5k次。账户异常检测_异常登录数据集