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


目录
相关文章
|
编解码 监控 算法
如何使用Pillow库进行拍照和截屏
如何使用Pillow库进行拍照和截屏
373 0
|
C# 容器
39.c#:groupbox容器
39.c#:groupbox容器
455 1
|
Android开发
autojs用ConnectivityManager实现网络监听
autojs用ConnectivityManager实现网络监听
1364 0
|
JavaScript 前端开发
Javascript 字符串分割split()
Javascript 字符串分割split()
992 0
Javascript 字符串分割split()
|
机器学习/深度学习 编解码 算法
yolo原理系列——yolov1--yolov5详细解释
yolo原理系列——yolov1--yolov5详细解释
1605 0
yolo原理系列——yolov1--yolov5详细解释
|
8月前
|
数据采集 供应链 安全
中小企业数改方案
本方案旨在推动中小企业数字化转型,落实国家四部门发布的《中小企业数字化赋能专项行动方案(2025—2027年)》。通过政策引导、技术支持和应用实践,帮助中小企业降低转型成本,提升核心竞争力,实现从营销管理、生产管控、质量管理到设备管理等多场景的全面数字化升级。
343 2
中小企业数改方案
python 将绘制的图片保存为矢量图格式(svg)
python 将绘制的图片保存为矢量图格式(svg)
python 将绘制的图片保存为矢量图格式(svg)
|
存储 索引 Python
元组和列表的区别?
【7月更文挑战第13天】元组和列表的区别?
1002 6
抓包工具 Fiddler 抓取 exe 包
抓包工具 Fiddler 抓取 exe 包
1247 0
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】如何利用 LLM 来创建更像人类的对话?
【5月更文挑战第7天】【大模型】如何利用 LLM 来创建更像人类的对话?