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

Python录屏程序运行报错:AttributeError: 'NoneType'对象无'shape'属性

报错根因定位

触发AttributeError: 'NoneType' object has no attribute 'shape'的核心原因是webcam.read()调用失败,返回的帧对象frame为空,后续强行读取shape属性触发报错,常见诱因有3种:

  • 摄像头索引配置错误:你当前代码使用索引1调用摄像头,绝大多数Windows设备默认内置摄像头的索引为0,如果没有外接额外摄像头的情况下,索引1找不到可用设备
  • 摄像头被占用/无权限:其他软件正在占用摄像头,或者系统没有给Pycharm、Python解释器开放摄像头调用权限
  • 无读取结果校验逻辑:webcam.read()的第一个返回值为帧读取是否成功的布尔标识,你当前代码直接忽略该标识,读取失败时操作空对象必然报错

另外日志中的WARN是Windows平台MediaFoundation视频后端的兼容性提示,不影响核心功能,也可以通过切换后端消除。

完整修复代码
import datetime

from PIL import ImageGrab
import numpy as np
import cv2
from win32api import GetSystemMetrics

width = GetSystemMetrics(0)
height = GetSystemMetrics(1)
time_stamp = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
file_name = f'{time_stamp}.mp4'
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
captured_video = cv2.VideoWriter(file_name, fourcc, 20.0, (width, height))

# 1. 摄像头索引默认改成0,加CAP_DSHOW后端消除Windows平台WARN提示,多个摄像头可依次试0/1/2
webcam = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 2. 校验摄像头是否成功打开
if not webcam.isOpened():
    print("摄像头调用失败,请检查索引、权限或是否被其他软件占用")
    exit()

while True:
    img = ImageGrab.grab(bbox=(0, 0, width, height))
    img_np = np.array(img)
    img_final = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
    # 3. 校验帧读取是否成功
    ret, frame = webcam.read()
    if ret:
        fr_height, fr_width, _ = frame.shape
        img_final[0:fr_height, 0: fr_width, :] = frame[0: fr_height, 0: fr_width, :]
    cv2.imshow('Secret Capture', img_final)

    captured_video.write(img_final)
    if cv2.waitKey(10) == ord('q'):
        break

# 程序退出前释放资源
webcam.release()
captured_video.release()
cv2.destroyAllWindows()
额外说明

如果修改索引为0后依然无法读取摄像头,可以依次尝试以下操作:

  • 关闭所有正在调用摄像头的软件(比如微信、QQ、相机应用等)
  • 进入Windows设置→隐私和安全性→摄像头,确认「允许应用访问你的相机」权限已开启,同时确认Pycharm的权限已经放开
  • 如果是外接USB摄像头,可以换个USB口重新插拔后再试

内容的提问来源于stack exchange,提问作者Neevraj Kumarpal Bokria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:54:02