python中openCV无法自动补全、代码提示

python中openCV无法自动补全

https://blog.csdn.net/newMiao001/article/details/88796557

解决方法:
添加cv2路径到系统环境中。

 

静态环境变量:
添加库所在路径到Path环境变量中。

 

动态加载:
修改cv2文件夹下的init.py文件。

init中的代码:
import sys
import os
import importlib
os.environ["PATH"] += os.pathsep + os.path.dirname(os.path.realpath(__file__))
 
from .cv2 import *
from .data import *
 
# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)
 
————————————————
版权声明:本文为CSDN博主「newMiao001」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/newMiao001/article/details/88796557

 


打开pycharm,将python interpreter配置成功后,输入以下代码发现

此时的imread函数的颜色与其他代码不同,其实是因为pycharm认为这里有错误,因为在cv2文件夹下的 init.py文件中没有imread函数,并且按住ctrl+左键也不会进入提示,这让开发人员非常痛苦,下面讲如何解决这个问题。

在opencv的安装路径中的pyd文件复制到site-package路径下
首先,找到opencv库的安装目录,其实我们知道,通过pip install 安装的module都会自动安装到python.exe安装目录下的site-packages路径下面,opencv模块的文件夹名称为cv2,我们也可以通过pip install opencv-python安装结束的提示找到opencv模块的安装路径,那么找到cv2文件夹以后,进入cv2文件夹中,发现有一个 cv2.cp37-win_amd64.pyd 文件,我们需要将这个文件修改名字为 cv2.pyd之后拷贝到site-packages路径下,为了防止错误,我们也可以将 cv2.cp37-win_amd64.pyd 复制一份到site-pachages路径下然后改名,这样再重新打开pycharm软件,就会发现有提示了,并且函数的使用方法也会有提示,可以说十分方便哦,
————————————————
分析原因
为什么将pyd文件复制到site-packages路径下后就能够代码提示了呢,再pycharm中ctrl+左键可以发现,原来site-packages添加cv2.pyd文件后,用户路径下的.Pycharmxxxx路径下面就会产生新的cv2模块的 init.py 文件,虽然这段代码中没有opencv的源代码,但是说明了opencv库函数的使用方法,对于我们开发人员来说也是非常方便了。
————————————————
版权声明:本文为CSDN博主「Tianxiadatong1001」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Tianxiadatong1001/article/details/87959884

 


pycharm PIL没有代码提示的解决办法

用PIL处理图像时没有代码提示是不是很不爽?

from PIL import Image
 
img = Image.open('f15.png')
print(img.format)
print(img.mode)
print(img.size)
原因:
python是动态强类型语言,IDE无法判断Image.open("f15.png")的返回值类型,无法根据参数类型自动补全

解决:
类型注释:
加上# type: Image.Image就可以了

from PIL import Image
 
img = Image.open('f15.png')# type: Image.Image
print(img.format)
print(img.mode)
print(img.size)
om = img.convert('L')
om.save('hd.png')
 使用isinstance指定:
assert isinstance(img, Image.Image)

from PIL import Image
 
img = Image.open('f15.png')
assert isinstance(img, Image.Image)
print(img.format)
print(img.mode)
print(img.size)
om = img.convert('L')
om.save('hd.png')
指定类型:
""":type: Image.Image"""

from PIL import Image
 
img = Image.open('f15.png')
""":type: Image.Image"""
# assert isinstance(img, Image.Image)
print(img.format)
print(img.mode)
print(img.size)
om = img.convert('L')
om.save('hd.png')
 
————————————————
版权声明:本文为CSDN博主「西奥斯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h18208975507/article/details/103239458

 

 

 

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值