解决读取视频文件时路径无误 cv2.cvtColor()却报错

本文介绍了在使用OpenCV处理视频流时遇到的错误:cv2.cvtColor()函数因尝试处理空值而报错。作者通过检查代码发现,问题在于视频流读取到最后一帧后未正确退出循环。解决方案是在循环中添加判断,当无法获取帧时(即grabbed为False)退出循环,从而避免空值错误。修复后的代码成功运行,不再报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的代码一开始报错

cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

网上说产生错误原因是文件路径有错,经过检查,我的文件路径无误
报错是

 gray_lwpCV = cv2.cvtColor(frame_lwpCV,cv2.COLOR_BGR2GRAY)这一行

原代码是这样的:

while True:
    # 读取视频流
    grabbed, frame_lwpCV = camera.read()
    # 对帧进行预处理,>>转灰度图>>高斯滤波(降噪:摄像头震动、光照变化)。
    gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY)
    gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)

后来想明白了,读取最后一帧后没有跳出循环,没有数据,所以

frame_lwpCV为空值,所以cv2.cvtColor()函数报错

所以只要加入判断是不是读取完了的代码即可
修改后代码为:

while True:
    # 读取视频流
    grabbed, frame_lwpCV = camera.read()
    if grabbed == False:  # 如果是最后一帧这个值为False
        break
    # 对帧进行预处理,>>转灰度图>>高斯滤波(降噪:摄像头震动、光照变化)。
    gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY)
    gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)

运行正确不报错

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值