OpenCV代码在PyCharm运行正常,VS Code中报错求助
问题诊断与解决方案
核心原因
代码在PyCharm运行正常但VS Code报错,本质是编辑器默认工作目录不一致:
- PyCharm自动将项目根目录(
E:\Personal Project\OpenCV)设为工作路径,所以Capture.PNG的相对路径能被正确识别; - VS Code默认工作目录是脚本所在文件夹(
E:\Personal Project\OpenCV\Codes)或终端当前目录,导致cv2.imread找不到图片,最终触发imshow的断言错误(因为读取失败后img为None)。
解决方法
方法1:修正相对路径
如果Capture.PNG存放在项目根目录,脚本在Codes子文件夹里,直接调整路径指向上级目录:
import cv2 # 用上级目录的相对路径读取图片 img = cv2.imread('../Capture.PNG') # 先验证图片是否读取成功 if img is not None: cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows() else: print("无法读取图片,请检查路径是否正确")
方法2:指定VS Code工作目录
- 打开VS Code的「运行和调试」面板(快捷键Ctrl+Shift+D);
- 点击「创建launch.json文件」,选择Python环境;
- 在生成的配置文件中添加
cwd字段,指定项目根目录:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "E:\\Personal Project\\OpenCV" // 替换为你的项目根目录 } ] }
设置完成后,VS Code会以指定目录作为工作路径,原代码的相对路径即可正常生效。
方法3:使用动态绝对路径(推荐)
通过代码自动获取脚本位置,动态拼接图片路径,彻底摆脱编辑器工作目录限制:
import cv2 import os # 获取脚本所在文件夹的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接图片的绝对路径(假设图片在项目根目录,即脚本目录的上级) img_path = os.path.join(script_dir, '../Capture.PNG') img = cv2.imread(img_path) if img is not None: cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows() else: print(f"读取失败,路径不存在:{img_path}")
额外提示
- 建议始终添加
img is not None的判断,避免因路径错误导致程序直接崩溃; - 排查时可打印当前工作目录确认:
print(os.getcwd()),快速定位路径问题。
内容的提问来源于stack exchange,提问作者EmployedSlaveStudent
相关产品推荐
相关产品推荐

