centos7 安装opencv的各种方法(含opencv contrib扩展包安装方法)

 

用conda安装 python3.6及ffmpeg4.0或ffmpeg3.3及 opencv3.x 后, 发现import cv2正常, 但 cap.isOpened() 总返回false!!!!!!!

import numpy as np
import cv2

cap = cv2.VideoCapture('rtsp://admin:[email protected]:554/h264/ch1/main/av_stream')
print(11)

while(cap.isOpened()):
    print(22)
    ret, frame = cap.read()
    print(ret)

    cv2.imshow('frame', frame)
    if (cv2.waitKey(1) & 0xFF == ord('q')):
        break
cap.release()
cv2.destroyAllWindows()
这里 cap.isOpened() 一直为false

很可能是conda没有装上opencv contrib扩展包

最终解决:   pip install opencv-contrib-python 

就是因为没装opencv contrib扩展所以没法调用 ffmpeg库.

 

干货,总结带ffmpeg 264解码 + opencv3安装过程:

1, 按照 我博文的另一文 <>    安装Anaconda3

2, 通过Anaconda3的conda命令, 安装ffmpeg, 及opencv3

    conda install -c https://conda.anaconda.org/menpo ffmpeg

    conda install --channel https://conda.anaconda.org/menpo opencv3 

3, 用 import cv2 测试正常 后, 再安装 pip包管理器.

4,  安装 pip包管理器,先安装pip的依赖 setuptools, 再安装最新pip

如果系统里已经有了pip,不用安装

   进入Python官网https://pypi.python.org/pypi/setuptools 找最新的setuptools 后,通过wget安装如下:

 wget https://files.pythonhosted.org/packages/8e/6a/bab79e7bf3ceede6c371d93c3ffc197b54b04a1e6f631b40cd1c71d656e4/setuptools-40.7.0.zip
    unzip setuptools-36.7.2.zip 
    cd setuptools-36.7.2 
    python setup.py build 
    python setup.py install

   下载包:  https://pypi.python.org/pypi/pip#downloads选择最新的包      wget https://files.pythonhosted.org/packages/c8/89/ad7f27938e59db1f0f55ce214087460f65048626e2226531ba6cb6da15f0/pip-19.0.1.tar.gz

 解压并进入目录:python setup.py install安装。

5, 用pip install opencv-contrib-python 安装opencv-contrib扩展

(奇怪的是扩展最后安装也行, 可能pip做的依赖非常好, 理清了我的环境做的安装吧)

6,  运行结果全为true, 成功了

(base) [root@localhost MyPython3Test]# python t3.py
33

True
True
(base) [root@localhost MyPython3Test]# ^C

 

如果出问题, 可以看下面部分:

 

网上有文章如下

Ubuntu 16.04 安装opencv的各种方法(含opencv contrib扩展包安装方法)

2018年03月10日 20:16:33 ZeroZone零域 阅读数:10593

 版权声明:本文为博主原创文章,转载请一定附上博主原文链接,并署名转自ZeroZone零域。 https://blog.csdn.net/ksws0292756/article/details/79511170

本文主要介绍安装opencv C++接口和python接口的几种方法。 首先介绍C++接口的,然后介绍Python接口的

C++接口安装

采用源码编译的安装方式,基本也就是这种方法了,首先在官网下载你想安装的版本的opencv压缩包,下载连接如下: 
https://github.com/opencv/opencv/releases

首先,安装一些依赖,根据自己的情况选择,如果不知道自己安装了那些依赖,就都输入一遍,如果已经安装系统会自动跳过,不会重复安装

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

然后,将压缩包解压,我下载我是opencv3.4.3版本,所以最后解压出来的文件夹就是opencv-3.4.3,接着,先用命令行进入该文件夹,然后执行命令,如下所示:

cd ~/opencv-3.4.3  # 进入opencv文件夹
mkdir build # 创建build文件夹
cd build # 进入build文件夹

#cmake指令,如果没有特殊要求建议就选择默认的就可以
#注意,后面的两个点千万不能省,代表了上级目录
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..  
make -j7 # 多线程执行make任务

# 最后一步,安装库文件
sudo make install

#安装完成

Python 接口安装

有以下几种方法。具体操作如下:

方法一(推荐):利用pip安装opencv-python

在安装之前,如果你之前安装过旧版本的opencv,那么就先将其删除,再进行下面的安装过程。 
在pip中可以方便快速的安装opencv-python和opencv-contrib-python,只需要输入两条指令即可:

$ pip install opencv-python #安装opencv
$ pip install opencv-contrib-python #安装opencv的contrib扩展包

这里写图片描述

常见问题:

  • opencv-python和opencv-contrib-python是否必须要同时安装? 
    答:不需要,他们分别可以独自运行,但是一般情况下,都会将两个包都装上
  • 报错显示pip找不到包? 
    答:这种请看多半是因为pip比较旧,这时只需要输入下面的指令更新以下pip就行了
$ pip install --upgrade pip
$ pip install wheel #如果确定已经安装了wheel就不用执行这条指令
  • 安装过程遇到错误提示? 
    答:确保你已经删除了旧版本的opencv python捆绑包

方法二:利用conda安装opencv

利用conda安装opencv,这种方法相较于pip安装方法来说,可以自由选择opencv的版本,使用面更广,但是缺点是不能安装opencv-contrib。具体操作如下: 
首先,可以查询一下conda里面可以安装的opencv:

conda search opencv

这里写图片描述 
然后,根据你想要安装的opencv版本(以3.1.0为例),输入以下指令即可:

conda install opencv=3.1.0

这里写图片描述

以上两种opencv的安装方法可以满足大部分人的基本需求,但是,如果你既想要自定义选择opencv的版本,又想要安装opencv-contrib扩展库,那么可以采用源码编译的方式安装,这也是opencv官方推荐的安装方式。

方法三:源码编译安装opencv和contrib

首先,更新以下系统:

$ sudo apt-get update
$ sudo apt-get upgrade

接着,安装需要的编译工具

$ sudo apt-get install build-essential cmake pkg-config

然后,安装相应的依赖包

$ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran

然后在Github的opencv项目主页下载你需要的版本,注意contrib的版本和opencv的版本要一致。 
opencv源码下载地址: 
https://github.com/opencv/opencv/releases 
contrib源码下载地址: 
https://github.com/opencv/opencv_contrib/releases 
这里写图片描述

下载好opencv的源码压缩包以后,将其解压,然后,进入到opencv的文件夹中(这里我以opencv3.1.0为例): 
(注意,如果下面的指令报错,就将所有-D后面的空格删除)

$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \ #这里是opencv的安装路径,建议不要修改,就采用默认的安装路径即可
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
    -D PYTHON_EXECUTABLE=~/.pyenv/bin/python \ #这是要用来编译的python路径
    -D BUILD_EXAMPLES=ON ..  # 我在编译例子时遇到错误,把它改为OFF通过

上边的参数配置中,有几处是需要根据你自己电脑上的路径来设置的:

  • CMAKE_INSTALL_PREFIX:opencv的安装路径,可以自己设置,但建议就用默认路径
  • OPENCV_EXTRA_MODULES_PATH:contrib文件夹的所在路径,取决于你刚刚下载的contrib压缩包解压后的文件位置
  • PYTHON_EXECUTABLE:用来进行编译的python路径,如果你不知道自己所有python的路径的话,可以利用指令which python来查询

完成cmake的配置后,利用make指令进行编译:

$ make

然后在进行安装

$ sudo make install
$ sudo ldconfig

最后,建立软连接

$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

 

//这是另一篇文章, 用git, 改变版本容易, 条理 清析

源码安装支持ffmpeg的opencv2

1.首先安装ffmpeg

  apt-get install ffmpeg

2.安装opencv对ffmeg的依赖

 #  for Compiling OpenCV with ffmpeg support
      apt-get install build-essential
      apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
      apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
     From

3.下载opencv源码并编译

 >> cd ~/
    >> git clone https://github.com/opencv/opencv.git
    >> cd opencv
    >> git checkout 3.1.0
    >> cd ..
    >> git clone https://github.com/opencv/opencv_contrib.git
    >> cd opencv_contrib
    >> git checkout 3.1.0 
     
    >> cd ~//opencv
    >> mkdir build
    >> cd build
     
    >> cmake -D WITH_CUDA=OFF \
            -D CMAKE_BUILD_TYPE=Release \
            -D CMAKE_INSTALL_PREFIX=/usr/local \
            -D WITH_IPP=OFF \
            -D WITH_FFMPEG=ON  \
            -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
            -D BUILD_TESTS=OFF \
            -D BUILD_PERF_TESTS=OFF \
            -D INSTALL_PYTHON_EXAMPLES=OFF \
            -D INSTALL_C_EXAMPLES=OFF \
            -D PYTHON_EXECUTABLE=$(which python) \
            -D BUILD_EXAMPLES=OFF ..
     
    >> make -j$nproc
    >> make install

 

我自己安装情况:

conda list
conda search ffmpeg
conda install ffmpeg //这样会安装 ffmpeg较高版本, 里面可能不支持x264或265库, 等, 最好不用conda conda install -c conda conda https://conda.anaconda.org/menpo ffmpeg  //这样安装了ffmpeg version 3.1.3-static 版本

(base) [root@localhost MyPython3Test]# ffmpeg -V
ffmpeg version 3.1.3-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.1 (Debian 5.4.1-1) 20160803
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --enable-libmp3lame --enable-libx264 
--enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig 
--enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-amrwbenc --enable-gray 
--enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --enable-libsoxr --enable-frei0r 
--enable-libfribidi --disable-indev=sndio --disable-outdev=sndio --enable-librtmp --enable-libmfx --enable-libzimg --cc=gcc-5
  libavutil      55. 28.100 / 55. 28.100

这个版本的ffmpeg 264与265都支持

 

//安装opencv
conda install opencv3  //不成功, 可能版本依赖问题

//成功方式如下, 时间比较长
//这个地址常断线, 如果断了重新运行. 断续安装.它会增量安装,直到全部完成
conda install --channel https://conda.anaconda.org/menpo opencv3    

这时候通过在整个计算机中查找,我发现/root/anaconda3/lib/python3.6/site-packages下也有这个cv2.cpython-36m-x86_64-linux-gnu.so文件。
于是我进入这个目录后:ln -s cv2.cpython-36m-x86_64-linux-gnu.so cv2.so 将那个文件软链接到cv2.so!这样就可以了。
(在make install之后我没找到cv2.so文件差点崩溃放弃,还好我没放弃,终于等到你哈哈哈)


用 import cv2 测试正常
(base) [root@localhost site-packages]# python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

但是!!!!!!!!!!!!!!

import cv2 
print(33)
cap = cv2.VideoCapture("rtsp://admin:[email protected]:554/h264/ch1/main/av_stream")
print(cap)

print(cap.isOpened())

ret,frame = cap.read()

print(ret)
#while ret:
#    ret,frame = cap.read()
#    cv2.imshow("frame",frame)
#    if cv2.waitKey(1) & 0xFF == ord('q'):
#        break
#cv2.destroyAllWindows()
#cap.release()
 


cv2.VideoCapture 一直返回false, 通过网络查找:

网上说ffmpeg 可能没生效或是版本太高, 最后发现是没有装opencv-contrib-python 

pip install opencv-contrib-python  安装后完全正常.

 


 

你可能感兴趣的:(python3,opencv3)