问题描述:
代码如下
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环境下运行
在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设置默认解释器,两者的设置过程一样的,建议都设置一下
在setting页面中选择,Project 项目名,Project Interpreter,在如下图右上角位置点击Add添加Python解释器
打开添加页面如下,在右边选项栏中选择第三项System Interpreter,点击右边选择位置按钮
找到Python解释器的python.exe文件(Python2和Python3都有这个文件)
添加成功后显示了Python2解释器的选项,同理设置Python3解释器,切换时就在setting中此处进行切换
3.python2.7装cv2的解决方案
网上说的pip install opencv-python和换镜像源都不好使,因为新版的opencv不再支持python2.7 因此安装的时候需要指定版本
pip install opencv-python==4.2.0.32
安装成功
4.运行python遇到SyntaxError: Non-ASCII character '\xe8' 报错
问题原因:因为没有指定文件的编码,默认情况下不能用中文。【不清楚为什么在python3的环境下无问题】
解决方案:在代码首行加入以下内容
# encoding:utf-8