You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用OpenCV报错module 'cv2' has no attribute 'videoCapture'

问题说明

Python开发OpenCV视频读取功能时触发报错:AttributeError: module 'cv2' has no attribute 'videoCapture',已将pip更新至最新版本问题仍存在,原实现代码如下:

import cv2 as cv

capture = cv.videoCapture('videos/cat1.mp4')

while True:
    isTrue, frame = capture.read()
    cv.imshow('video', frame)

    if cv.waitKey(20) & 0*FF == ord('d'):
        break

capture.relase()
cv.destroyAllWindos()
问题根因

代码中存在多处OpenCV API拼写、语法错误,是触发报错的核心原因:

  • OpenCV官方API采用大驼峰命名规则,视频捕获类的正确名称为VideoCapture,原代码中videoCapture首字母小写,直接触发本次属性不存在的报错
  • 按键判断逻辑的十六进制标识书写错误,正确写法为0xFF,原代码误写为0*FF(将十六进制标记x错写为乘号*)
  • 视频资源释放方法名拼写错误,正确写法为release(),原代码误写为relase()(漏写字母e)
  • 窗口销毁方法名拼写错误,正确写法为destroyAllWindows(),原代码误写为destroyAllWindos()(字母顺序写反)
  • 若修正所有拼写问题后仍存在属性报错,是因为安装了与官方OpenCV重名的冲突第三方包,需要清理环境后重装官方包。
修复方案
  1. 先执行命令清理冲突包、安装官方OpenCV依赖:
pip uninstall -y cv2 opencv-python
pip install opencv-python
  1. 将代码中所有API拼写错误修正,补充视频读取为空时的退出判断(避免视频播放结束后触发空帧报错),修正后完整可运行代码如下:
import cv2 as cv

capture = cv.VideoCapture('videos/cat1.mp4')

while True:
    isTrue, frame = capture.read()
    # 视频读取到末尾/文件路径错误时直接退出循环
    if not isTrue:
        break
    cv.imshow('video', frame)

    if cv.waitKey(20) & 0xFF == ord('d'):
        break

capture.release()
cv.destroyAllWindows()

内容的提问来源于stack exchange,提问作者Fahim Iqbal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 09:24:35