VS Code运行OpenCV目标跟踪代码报(-215)错误,求解决方法
解决VS Code中OpenCV目标跟踪代码的(-215)断言错误
错误根源
(-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow' 意味着OpenCV要显示的图像是空的,核心问题是视频文件加载失败。Spyder能正常运行是因为两个编辑器的默认工作目录不同:
- Spyder默认以代码文件所在文件夹为工作目录
- VS Code默认工作目录可能是你打开的根项目文件夹,而非代码所在子文件夹
解决步骤
1. 修改代码(最稳妥的方案)
把视频路径改成绝对路径,或者动态获取脚本所在目录拼接路径,避免工作目录差异影响:
- 绝对路径示例:
cap = cv2.VideoCapture("D:/your_project_folder/video.mp4")
- 动态路径示例(推荐,适配不同环境):
import os import cv2 # 获取当前脚本所在文件夹路径 script_path = os.path.dirname(os.path.abspath(__file__)) # 拼接视频文件路径 video_file = os.path.join(script_path, "your_video.mp4") cap = cv2.VideoCapture(video_file)
2. 调整VS Code工作目录(无需改代码)
如果不想修改代码,可以把VS Code的工作目录切换到代码文件所在的文件夹:
- 打开目标代码文件后,点击左下角显示当前工作区的路径区域
- 选择「浏览文件夹」,定位到代码所在文件夹并确认
- 重启终端后重新运行代码
额外排查项
- 检查视频文件名的大小写:部分系统(如Linux/macOS)对文件名大小写敏感,确保代码里的文件名和实际文件一致
- 统一OpenCV版本:在Spyder和VS Code的终端分别运行
print(cv2.__version__),如果版本差异较大,建议用pip install opencv-python==对应版本号统一安装相同版本
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

