Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2

Ubuntu20.04搭建opencv环境并运行python程序

  • 引言
  • 一、安装anaconda3
    • 1. 下载anaconda3
    • 2. 安装...
    • 3. 环境变量的配置
  • 二、python环境的创建
    • 1. 更换国内源
    • 2. 创建python环境
    • 3. 安装成功提示
    • 4. 查看python版本
    • 5. 安装OpenCV-Python
    • 6. 安装Labelme
  • 三、运行python项目可能会遇到的问题
    • 1. 将一个OpenCV-Python项目拖拽到Ubuntu任意目录下
    • 2. 遇到的问题
      • 2.1 can't open camera by index
    • 2.2 ModuleNotFoundError: No module named ‘cv2’
  • 四、总结

引言

怎么说呢 ,这是我第一次在Ubuntu系统上搭建opencv环境,期间遇到了相当多的问题,从上周五一直搞到周末,花了整整两天都没搞好,心态直接爆炸啊!!!今天决定在Windows上安装anaconda3,一次跑起来。也突然从中获取到了灵感,然后打算在搞最后以下,结果真的在Ubuntu下安装成功了!

一、安装anaconda3

1. 下载anaconda3

到官网下载Ubuntu系统的anaconda3安装包,->链接点此

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第1张图片
这是我选择安装的版本,如果Ubuntu下载速度比较慢,可以在Windows系统下载好,然后通过虚拟机的[共享文件夹]cp到Ubuntu桌面(其实哪个路径都行啦…)
由于时间问题,共享文件夹的教程可以自己找“度娘”,一搜一大堆。

在这里插入图片描述
我的给放到了下载目录下

2. 安装…

按照上图——进入安装包的所在目录,解压安装包

在这里插入图片描述
输入bash指令:

dsk@DSK:~$ bash Anaconda3-2020.07-Linux-x86_64.sh 

接下来全选Y或者Enter键

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第2张图片
出现以上界面或有“MORE”时按“q”快速跳过

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第3张图片
出现以上内容表明安装成功!

3. 环境变量的配置

在安装路径查看.bashrc文件,ls指令看不到就用ls -a

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第4张图片

打开.bashrc文件

在这里插入图片描述

在末尾添加以下代码

export PPATH="/home/用户名/anaconda3/bin:$PATH"   #追加上anaconda3的安装路径

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第5张图片
记得再source一下!在这里插入图片描述

dsk@DSK:~$ source ~/.bashrc 

现在就可以查看conda及python的版本号了

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第6张图片

二、python环境的创建

1. 更换国内源

打开或创建.condarc文件

dsk@DSK:~$ vim ~/.condarc

如果出现红框提示,请安装vi编辑器(黄框指令),没有请忽略

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第7张图片

打开文件后添加以下内容:

channels:
 - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
ssl_verify: true
//退出insert(插入)模式
:wq  保存并退出

2. 创建python环境

dsk@DSK:~$ conda create -n ai-learn368 python=3.6.8

其中ai-learn368为你要创建的环境名称,后面加上环境版本号,以便于后期多版本的安装和使用。python=3.6.8为你要安装的python的版本,在这里我们选择3.6.8版本,3.8.3版本好像会出问题。

确认指令提示全选yes或者y。

3. 安装成功提示

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第8张图片

4. 查看python版本

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第9张图片
1:进入刚刚配置的python环境
2:查看该环境下python的版本

发现该版本和我们安装的版本是一致的

5. 安装OpenCV-Python

(ai-learn368) dsk@DSK:~$ pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple
#该步骤尽量不要在opencv-python后面追加详细的版本号,不然在后期的项目运行中很可能会出现问题,
#我之前就是添加了详细的版本号出了很多的问题,直接被搞

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第10张图片
出现以上提示表明安装成功,还有详细的opencv-python的版本号。

6. 安装Labelme

用国内源下载地址

pip install labelme -i https://mirrors.aliyun.com/pypi/simple
#也不要在labelme后面追加详细的版本号,不然也可能遇到坑。。

在这里插入图片描述

出现以下提示表明安装成功:
在这里插入图片描述

三、运行python项目可能会遇到的问题

1. 将一个OpenCV-Python项目拖拽到Ubuntu任意目录下

Ubuntu20.04搭建OpenCV环境并运行python程序can’t open camera by index和ModuleNotFoundError: No module named cv2_第11张图片
1:新建一个文件夹(将项目文件放到该 目录)
2:进入文件夹
3:进入项目文件
ls 后可见.py文件
4:运行一个.py文件

2. 遇到的问题

2.1 can’t open camera by index

运行后系统提示如下

[ WARN:0] global /tmp/pip-req-build-6amqbhlx/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video0): can't open camera by index

报错的意思是摄像头打不开啊或者说是找不到设备

我在博客上找了很多教程,但是如果只把.py文件中的cv.VideoCapture(args.input if args.input else 0)改为cv.VideoCapture(0)或者-1、1等,只能解决部分人遇到的问题。

在这里插入图片描述
解决办法一:

我们先打开device目录,看有没有我们摄像头设备

(ai-learn368) dsk@DSK:~/myDocument/human-pose-estimation-opencv$ ls /dev/

查询结果如下:
在这里插入图片描述
我们发现以v字符开头的设备中并没有与摄像头有关的信息。

解决办法:

我又在度娘上搜了一下相关的问题,找到了有效的解决办法
主要原因是没有启动 虚拟机->可移动设备->关于摄像头设备的选项
我用的是虚拟机是Vmware Workstation 16 Player,相关操作如下

在这里插入图片描述
第4步之后,点击[确定]
其版本的虚拟机也都一样,只是按键位置不一样而已,耐心找一下。
这个时候我们在查看以下

在这里插入图片描述
这个时候和第一次ls /dev/ 目录就会明显的发现多了video0和video1的设备项
这个时候我们就可以通过修改上面提到的.py文件的cv.VideoCapture(0)括号里的值来启动摄像头设备了,值赋值为0或1。
在这里插入图片描述
这个时候我们调用指令运行一下⬇(允许我打个马赛克)

在这里插入图片描述
成功运行!!!!!

注意
如果已经可见video0和vedio1设备但还是调不了摄像头的解决办法

  1. 打开虚拟机设置
    在这里插入图片描述

  2. 在USB兼容性选项里进行版本的切换,2不行就3,3不行就2…在这里插入图片描述

2.2 ModuleNotFoundError: No module named ‘cv2’

哈哈,一开始安装的时候就是这个问题。直接把我搞吐,问题就出现在安装OpenCV-Python和labelme的时候追加了详细的版本号,从而导致了和 python环境不一样的愿意吧!除此之外,还会出现别的问题,具体记不太清了。

解决办法

  1. 先用指令:pip install opencv-python执行一遍,如果编译.py还是这样就看下一条;
  2. 在安装opencv-python和labelme的时候不追加版本号就好。

四、总结

通过和前俩天安装失败的经历相比较,在整个的安装过程中,最重要的是要注意版本的问题。我上周末用了两天的时间来搭建环境都没有搞定,就是因为在安装的时候追加了详细的版本号(可能导致两个应用之间无法进行完好的版本对接)导致#ModuleNotFoundError: No module named ‘cv2’等问题的出现(即使用pip install opencv-python指令也没用)。

希望这篇博客对你有所帮助。。。

第一次写博客,有错误欢迎纠正,有问题也可以一起讨论。

项目文件加Q:2544867557

你可能感兴趣的:(OpenCV,ubuntu,python,anaconda,opencv)