栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

opencv-python报错Invalid number of channels in input image

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

opencv-python报错Invalid number of channels in input image

说明

拾起一份许久未碰的代码,准备丢到一台win10上跑,发现报了一个Invalid number of channels in input image,仔细一看,图像通道无效,以下是解决过程。

过程
  • debug后发现,是进行灰度处理这个地方报出的错误
cv2.cvtColor(self.image, cv2.BGR2GRAY)
  • 详细的报错信息:
OpenCV(4.1.0) c:projectsopencv-pythonopencvmodulesimgprocsrccolor.simd_helpers.hpp:92: error: (-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper,struct cv::impl::A0xe227985e::Set<1,-1,-1>,struct cv::impl::A0xe227985e::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)'
> Invalid number of channels in input image:
>     'VScn::contains(scn)'
> where
>     'scn' is 2
  • 可以看到,既然是输入的图片通道无效,而传入的图片self.image并没有做任何处理,是直接调用self.cap摄像头的read()函数读取到的,理论上应该是通道数为3。
  • 于是在灰度处理之前插装了一句print
print(self.image)
# 输出结果:(640, 480, 2)
  • 默认的读取方式应该是以RGB三通道进行读取,于是检查了摄像头初始化的代码。发现了当时在在linux上运行时更改了摄像头的编码格式,而两台电脑opencv-python的版本并不一致(代码如下)
self.cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('Y', 'U', 'Y', 'V'))
  • 把代码注释后发现,图像能够正常的以BGR三通道进行读取
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/283269.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号