Python 3.6环境下IDLE中OpenCV遇imread/imshow属性错误求助
解决方案:IDLE中OpenCV模块找不到imread/imshow的问题
嘿,这个问题我之前也踩过坑,一眼就看出症结啦!
问题根源
先看你的错误信息里的关键路径:
File "H:\python project\cv2.py", line 3, in
import cv2
File "H:\python project\cv2.py", line 5, in
img = cv2.imread("H:\python project\watch.jpg",0)
你把自己的Python脚本命名成了cv2.py!这会和你安装的OpenCV官方模块重名,导致Python在导入时优先加载了你自己的这个脚本,而不是真正的OpenCV库——你自己的脚本里当然没有imread、imshow这些方法,所以才会抛出属性错误。
至于命令行能正常运行,大概率是因为执行时的工作目录和脚本所在目录不同,或者缓存没干扰到,但这只是偶然情况,本质问题还是文件名冲突。
修复步骤
- 第一步:重命名你的脚本
把你的cv2.py改成别的名字,比如opencv_test.py或者image_demo.py,总之别和第三方模块名重名就行。 - 第二步:清理缓存文件
检查脚本所在目录,有没有生成cv2.pyc文件或者__pycache__文件夹,这些是Python的编译缓存,必须删掉,不然Python还是会加载旧的缓存内容。 - 第三步:重新运行脚本
打开IDLE运行改名后的脚本,这时候import cv2就会正确加载你安装的OpenCV模块了。
额外小提示
验证模块是否正确加载:
在IDLE里单独运行这两行代码,确认路径是系统安装的OpenCV路径:import cv2 print(cv2.__file__)正常输出应该是类似
C:\Python36\Lib\site-packages\cv2\cv2.cp36-win_amd64.pyd这样的site-packages目录下的文件。修复图片路径的转义问题:
你的路径里用了单反斜杠\,容易触发Python的转义字符逻辑,建议改成双反斜杠\\或者正斜杠/:img = cv2.imread("H:\\python project\\watch.jpg", 0) # 或者 img = cv2.imread("H:/python project/watch.jpg", 0)
内容的提问来源于stack exchange,提问作者Aj_kumar
相关产品推荐
相关产品推荐

