linux安装opencv3.4.5+opencv_contrib (ubuntu16.04/CentOS7)

我的电脑系统是Windows10,但现在需要在Ubuntu上安装OpenCV,所以首先要在Windows10上装个linux子系统。

1、安装ubuntu16.04

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。参考资料[1][2],在安装任何 Linux 发行版本之前,必须确保启用 Windows Subsystem for Linux 可选功能。
按下 “Windows + X”,选择 Windows PowerShell(管理员),输入以下命令,出现提示后重启计算机

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

打开 Microsoft Store 搜索Ubuntu,选择Ubuntu 16.04 LTS(一开始我选了18.04,在后续编译OpenCV时出了问题,所以这里建议选16.04稳妥一点),获取并安装。

安装完成后可以在【开始】菜单的【最近添加】中找到 Ubuntu,或者在Cortana的搜索框中搜索,点击启动。第一次打开 Ubuntu 时,会提示创建新的用户账户和密码。

ubuntu Linux子系统的目录是在这个目录下

C:\Users\admin\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

windows的磁盘被挂载到了/mnt下,可以直接访问

2、Ubuntu 安装OpenCV

先更新下(避免下载安装过程中出现链接找不到404等错误),然后把g++装了

sudo apt-get update
sudo apt-get upgrade
apt-get install g++ 

添加OpenCV所需的环境和依赖库:

这两行是必选的
$ sudo apt-get install build-essential
$ 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 libtiff-dev libjasper-dev libdc1394-22-dev

从github中下载下OpenCV + OpenCV_Contrib的源码,记得选对版本,这里我下载的是3.4.5版本的

https://github.com/opencv/opencv/releases/tag/3.4.5

https://github.com/opencv/opencv_contrib/tree/3.4.5

在windows上先解压opencv,然后再解压opencv_contrib,将解压得到的opencv_contrib移到opencv文件夹里,在Ubuntu里用命令把opencv文件夹拷贝到/home/目录下,如果遇到权限问题,就使用 sudo chmod -R 777 文件夹

cp -rf /mnt/c/workspace/* /home/

进入opencv目录,创建build目录后,进入build目录

mkdir build

开始用cmake编译,编译结果显示如下图

cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

如果配置要编译python 的话,先装下numpy,pip3 install numpy -i https://pypi.doubanio.com/simple/,跟python相关的路径设置,参考ubuntu简易配置python3的opencv

cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D BUILD_opencv_python3=ON -D INSTALL_PYTHON_EXAMPLES=ON -D PYTHON3_INCLUDE_DIR=/usr/include/python3.5m -D PYTHON_NUMPY_PATH=/usr/local/lib/python3.5/dist-packages -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.5 -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

接下来执行以下命令,[100%]通过就OK了(-j8是因为电脑CPU是8核)

make -j8

执行下面那句命令完成安装,完成后就可以在/usr/local/lib下看见opencv编译的结果

sudo make install

编辑配置文件,修改两个文件/etc/ld.so.conf和/etc/bash.bashrc,最后source一下,使修改立即生效

$ sudo vim /etc/ld.so.conf
在下面加上这行/usr/local/lib

$ sudo ldconfig

$ sudo vim /etc/bash.bashrc
在末尾添加下面两行
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

$ source /etc/bash.bashrc

3、测试OpenCV

在/home/lzr/code/下面写一个测试程序test_opencv.cpp,如下:

#include <opencv2/highgui/highgui.hpp>
int main()
{
    std::string imageName = "test.jpg";
    cv::Mat testImage = cv::imread(imageName,0);
    cv::imwrite("result.jpg",testImage);
    return 0;
}

编译

g++ test_opencv.cpp `pkg-config --libs --cflags opencv` -o  test_opencv

运行

./test_opencv

查看下生成的result.jpg如果是灰度图就是正常运行了。

 

使用Makefile,sudo vim Makefile,内容如下(注意g++前面用TAB键,而不是空格*4,否则make会报错makefile:2: *** missing separator. Stop. make),然后make,最后./test_opencv也能正常运行。

test_opencv: test_opencv.cpp
        g++  -o ${@} $<  `pkg-config opencv --cflags --libs `

若是编库,可以用如下模板

TARGET  := libTest.so
  
#compile and lib parameter
CC      := g++
LIBS    := `pkg-config --libs --cflags opencv`
SHARE   := -fPIC -shared -o
  
#source file
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
  
.PHONY : everything objs clean veryclean rebuild
  
everything : $(TARGET)
  
all : $(TARGET)
  
rebuild: veryclean everything
                
clean : 
	rm -fr *.o

veryclean : clean
	rm -fr $(TARGET)

$(TARGET) :
	$(CC) $(SHARE) $@ $(SOURCE)  $(LIBS)

4、CentOS配置

在CentOS7上配置opencv3.4.5的流程跟上面的差不多,只不过是把命令修改下,换成apt-get install 换成 yum install,例如安装g++时sudo yum -y install gcc-c++,如果解压opencv源码时遇到unzip: command not found,就sudo yum -y install unzip zip;gtk 图形化界面库其实可以不装。

# 配置好epel源
yum -y install epel-release
# gcc一般时有的,通常需要安装g++
sudo yum -y install gcc-c++

# 安装cmake
sudo yum install cmake

#下载opencv和opencv_contrib
wget https://github.com/opencv/opencv/archive/3.4.5.zip
wget https://github.com/opencv/opencv_contrib/archive/3.4.5.zip

#解压后,在opencv—3.4.5下面新建文件夹build和opencv_contrib,把opencv_contirb-3.4.5里的内容拷贝到opencv—3.4.5/opencv_contrib里

# 进入bulid文件夹准备编译
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

make

sudo make install

添加路径时改的是/etc/bashrc ,库目录是/usr/local/lib64,如下:

$ sudo vim /etc/ld.so.conf
在下面加上这行/usr/local/lib64

$ sudo ldconfig

$ sudo vim /etc/bashrc
在末尾添加下面两行
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig
export PKG_CONFIG_PATH

$ source /etc/bashrc

 

可能遇到的错误:

  • CentOS7虚拟机网络出问题的话

Cannot find a valid baseurl for repo: base/7/x86_6

1、打开 vi /etc/sysconfig/network-scripts/ifcfg-eth0(每个机子都可能不一样,但格式会是“ifcfg-eth数字”),把ONBOOT=no,改为ONBOOT=yes

2、重启网络:service network restart
  • linux虚拟机安装完毕之后,ifconfig命令提示command not found,只需要执行:yum install net-tools 即可

  • make时若报错:fatal error: can’t write PCH file: No space left on device,就是当前对应的存储空间不足。输入命令:df -h 可以查看磁盘空间情况。

 

补充:

错误提示:sift = cv2.xfeatures2d.SIFT_create()
 

解决方案:之前安装的版本太新,申请了算法专利保护,SIFT等已经不能够使用。

先卸载原先安装的库:pip uninstall opencv-contrib-python,

然后pip install opencv-contrib-python==3.4.2.16  或者(3.4.2.17,   3.4.3.18,    3.4.4.19,   3.4.5.20)

我安装的是3.4.2.16,成功运行。

 
————————————————
版权声明:本文为CSDN博主「qq_41962154」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41962154/article/details/88948948

 

参考资料

[1] Windows Subsystem for Linux Installation Guide for Windows 10

[2] Windows 10 安装 Linux 子系统(Windows Subsystem for Linux)

[3] windows10 Linux子系统文件目录

[4] OpenCV官方教程:Installation in Linux

[5] OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib

[6] OpenCV学习一《Linux下安装OpenCV》

[7] Ubuntu16.04安装配置opencv3.4.3+opencv_contrib3.4.3

[8] Linux环境下OpenCV的安装

[9] centos7.4 opencv3.4安装

[10] centos7下opencv3.4.1 的安装和编译全解

[11] OpenCV官方配置选项

[12] https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值