python语言使用openCV时cv2.cvtColor出错

C罗子 2017-06-06 11:24:24
python语言使用openCV时cv2.cvtColor出错,请问哪里不对?
...全文
8397 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckxnrw 2020-12-30
  • 打赏
  • 举报
回复
我已经修改了,为什么还是报这个错误
  • 打赏
  • 举报
回复
引用 9 楼 阿尔法先生 的回复:
ret, frame = cam.read()
这里在后面必须加上判断视频是否读取结束的判断,否则播放到最后一帧的时候出现问题了
if ret == False:
break
然后重新运行,就可以了


谢谢
LLL23333 2019-05-06
  • 打赏
  • 举报
回复
引用 9 楼 阿尔法先生 的回复:
ret, frame = cam.read()
这里在后面必须加上判断视频是否读取结束的判断,否则播放到最后一帧的时候出现问题了
if ret == False:
break
然后重新运行,就可以了
对了,太好了
weixin_43730228 2018-11-25
  • 打赏
  • 举报
回复
ret, frame = cam.read()
这里在后面必须加上判断视频是否读取结束的判断,否则播放到最后一帧的时候出现问题了
if ret == False:
break
然后重新运行,就可以了
weixin_43351203 2018-11-24
  • 打赏
  • 举报
回复
我也这样子,这是演员吧
嗒-- 2018-10-20
  • 打赏
  • 举报
回复
出现同样的错误。
C罗子 2017-06-07
  • 打赏
  • 举报
回复
引用 3 楼 corfox_liu 的回复:
[quote=引用 2 楼 xianying7509 的回复:]
[quote=引用 1 楼 corfox_liu 的回复:]
那是因为frame不是3通道的或是4通道的

if len(frame.shape) == 3 or len(frame.shape) == 4:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY
else:
gray = frame

您好,您说的3通道和4通道是什么意思啊?网上这个方面介绍的很少,能简单说一下吗?[/quote]
就是颜色模型啊,R(red) G(green) B(blue)红绿蓝三种颜色的组合,合成其它颜色。RGB就是三通道的,然后还有一个透明度
A(alpha),RGBA就是四通道的,灰色图像就是单通道的。OpenCV里图像Mat每一通道是8位的,按BGR顺序排列的,所以cvtColor的转换参数一般是COLOR_BGR2GRAY。
大概就是这样,我了解的也不是太详细,仅供参考。你还可以查查[OpenCV参考手册](docs.opencv.org),谷歌一下颜色模型等相关的知识。[/quote]

您好,按照您说的修改代码提示:AttributeError: 'NoneType' object has no attribute 'shape'

C罗子 2017-06-07
  • 打赏
  • 举报
回复
引用 1 楼 corfox_liu 的回复:
那是因为frame不是3通道的或是4通道的

if len(frame.shape) == 3 or len(frame.shape) == 4:
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY
else:
    gray = frame
您好,您说的3通道和4通道是什么意思啊?网上这个方面介绍的很少,能简单说一下吗?
corfox_liu 2017-06-07
  • 打赏
  • 举报
回复
引用 2 楼 xianying7509 的回复:
[quote=引用 1 楼 corfox_liu 的回复:] 那是因为frame不是3通道的或是4通道的

if len(frame.shape) == 3 or len(frame.shape) == 4:
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY
else:
    gray = frame
您好,您说的3通道和4通道是什么意思啊?网上这个方面介绍的很少,能简单说一下吗?[/quote] 就是颜色模型啊,R(red) G(green) B(blue)红绿蓝三种颜色的组合,合成其它颜色。RGB就是三通道的,然后还有一个透明度 A(alpha),RGBA就是四通道的,灰色图像就是单通道的。OpenCV里图像Mat每一通道是8位的,按BGR顺序排列的,所以cvtColor的转换参数一般是COLOR_BGR2GRAY。 大概就是这样,我了解的也不是太详细,仅供参考。你还可以查查[OpenCV参考手册](docs.opencv.org),谷歌一下颜色模型等相关的知识。
corfox_liu 2017-06-06
  • 打赏
  • 举报
回复
那是因为frame不是3通道的或是4通道的

if len(frame.shape) == 3 or len(frame.shape) == 4:
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY
else:
    gray = frame

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧