cv2.dnn.readNetFromDarknet()在python3上遇到的问题

简介: 代码编写完毕之后 发现 i[0]的数值无法正确获取,仔细寻找之后发现cv2.dnn.readNetFromDarknet()要求在python2环境下运行

问题描述:


代码如下


net = cv2.dnn.readNetFromDarknet(configPath,weightsPath)
#获取YOLO每一层的名称
#getLayerNames():获取网络所有层的名称。
ln = net.getLayerNames()
# 获取输出层的名称: [yolo-82,yolo-94,yolo-106]
# getUnconnectedOutLayers():获取输出层的索引
ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]


代码编写完毕之后 发现 i[0]的数值无法正确获取,仔细寻找之后发现cv2.dnn.readNetFromDarknet()要求在python2环境下运行


bb9dee8110f14c07a96a6f8694326c19.png


在python2.7的安装和cv2导入的过程中也遇到了一些问题,故做总结。


步骤:


1.用conda建一个python2虚拟环境


1. 显示可安装的python版本
conda search -f python
2. 安装虚拟环境,名称为py2
conda create -n py2 python=2.7
3. 激活py2
利用conda info –envs 或者conda env list 查询的虚拟环境,输入activate py2激活py2环境
#删除虚拟环境yourenvname 
conda remove -n yourenvname -all移除虚拟环境


2.修改项目的python版本,从python3.8切换到python2.7【注意】


打开File-setting,为该项目设置Python解释器,defaultSetting为PyCharm设置默认解释器,两者的设置过程一样的,建议都设置一下


5743f8c3a7c34b3792f9c7c5783bd58e.png


在setting页面中选择,Project 项目名,Project Interpreter,在如下图右上角位置点击Add添加Python解释器


5a2edf65238547df8510b9e64671f3cf.png


打开添加页面如下,在右边选项栏中选择第三项System Interpreter,点击右边选择位置按钮


20180601074432638.png


找到Python解释器的python.exe文件(Python2和Python3都有这个文件)


9318357ba68b4d58b5ee188a27577b14.png


添加成功后显示了Python2解释器的选项,同理设置Python3解释器,切换时就在setting中此处进行切换


20180601075305727.png


3.python2.7装cv2的解决方案


网上说的pip install opencv-python和换镜像源都不好使,因为新版的opencv不再支持python2.7 因此安装的时候需要指定版本


pip install opencv-python==4.2.0.32


安装成功


20201118204356418.png


4.运行python遇到SyntaxError: Non-ASCII character '\xe8' 报错


20190418144356300.png


问题原因:因为没有指定文件的编码,默认情况下不能用中文。【不清楚为什么在python3的环境下无问题】


解决方案:在代码首行加入以下内容


# encoding:utf-8


目录
相关文章
|
10天前
|
自动驾驶 计算机视觉 Python
【python版CV】-图像处理(1)
【python版CV】-图像处理(1)
|
10天前
|
计算机视觉 Python
【python版CV】—图像基本操作
【python版CV】—图像基本操作
|
28天前
|
编解码 计算机视觉 Python
opencv 图像金字塔(python)
opencv 图像金字塔(python)
|
4月前
|
存储 安全 数据库
python Pyramid
python Pyramid
57 1
Python-OpenCV边缘检测
Python-OpenCV边缘检测
86 0
|
计算机视觉 Python
python使用CV2剪切图片
python使用CV2剪切图片
83 0
|
计算机视觉 Python
OpenCV将两幅图像拼在一起(Python)
OpenCV将两幅图像拼在一起(Python)
141 0
|
编解码 计算机视觉 Python
python-opencv(10)图像金字塔
文章目录 1. 图像金字塔特点 2. 向下采样 2.1. 特点
101 0
python-opencv(10)图像金字塔
|
文字识别 索引
Python-Tensorflow-MNIST手写识别
Python-Tensorflow-MNIST手写识别
95 0
Python-Tensorflow-MNIST手写识别
|
存储 算法 测试技术
opencv K近邻(python)
opencv K近邻(python)
opencv K近邻(python)