重装NVIDIA驱动后TensorFlow视频检测程序cv2.imshow无显示问题求助
可行解决方案
1 先定位程序卡住的位置
在对应代码行后添加打印语句确认卡段:
model = models.load_model(model_path)后加print("模型加载完成")while(vid.isOpened()):下第一行加print("进入循环,ret返回值:", ret)
运行后观察打印输出:- 如果连「模型加载完成」都没有输出:说明模型加载时卡死,属于TensorFlow和CUDA/驱动适配问题,参照第2步处理
- 如果模型加载完成但没有循环相关打印:说明
VideoCapture读取视频失败,优先检查视频路径是否正确,路径中的空格、中文都可能导致OpenCV读取异常,可尝试将视频移动到无空格无中文的路径下测试
2 排查CUDA与驱动兼容性问题
你当前使用的CUDA 11要求NVIDIA驱动版本≥450.80.02,可打开NVIDIA控制面板查看当前驱动版本,若版本不符合要求,降级驱动到适配CUDA 11的版本即可。
3 排查显存不足问题
你的NVIDIA 920MX仅2G显存,日志显示初始化已占用1.3G左右,模型预测时很容易出现显存不足卡死的情况,可在导入TensorFlow后添加如下代码强制使用CPU运行,验证是否是GPU侧问题:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
如果CPU运行时程序有正常打印、OpenCV窗口能正常弹出,就确认是GPU侧问题,可尝试升级驱动/更换更小的模型解决。
4 排查OpenCV本身故障
将所有TensorFlow相关代码注释,仅保留最简的视频读取播放逻辑:
import cv2 vid = cv2.VideoCapture("你的视频路径") while(vid.isOpened()): ret, frame = vid.read() if ret: cv2.imshow('test', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break vid.release() cv2.destroyAllWindows()
如果上述代码无法正常运行,说明重装驱动时破坏了OpenCV的依赖,执行如下命令重装即可:
pip uninstall -y opencv-python opencv-python-headless pip install opencv-python
5 修正代码逻辑错误
你现有代码中存在两处会导致运行异常的逻辑:
vid.set(3,480)、vid.set(4,240)两行写在循环内,每次读帧都会重新设置分辨率,严重拖慢运行速度甚至卡死,需要移到vid = cv2.VideoCapture(...)之后、循环之前- 你将resize后的视频帧直接用
frame_set=np.arange(10*width*height*3).reshape(10,width, height, 3)覆盖,实际输入模型的是随机生成的数组,根本不是视频帧内容,需要自行修改为累计存储最近10帧的逻辑,才能符合你模型10帧输入的要求
内容的提问来源于stack exchange,提问作者JuniorPython
相关产品推荐
相关产品推荐

