cvtcolor函数_openCV 轮廓绘制实例报错解决(问题出在cvtcolor函数的使用)

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor, file C:buildmaster_winpack-build-win64-vc14opencvmodulesimgprocsrccolor.cpp, line 11048

内容:openCV、《学习openCV3(中文版)》

环境:VS2015、C++

在学习轮廓检测部分时,把书中的一个使用trackbar改变阈值的实例(P365)自己敲了一下,编译通过,但是当我拖动trackbar时,就会出现如下报错:

8ad47475d212e908d9378647f1b34f4f.png

我在尝试中发现,当我不使用cvtcolor将RGB图转化为灰度图而是直接在imread中直接读取灰度图时,这一报错消失,因此可以判断是使用cvtcolor函数时出现了问题,出问题时cvtcolor这句代码如下:

cvtColor(g_gray, g_gray, CV_RGB2GRAY);

此时,cvtColor函数的输入输出是同一幅图像。

之后,我还是用imread读取一幅RGB图像进行进一步尝试,当我把cvtColor的输出放在一个新的Mat数组中时,该报错也消失了。

所以,最终发现问题出在了将cvtcolor函数的输出图像放在了输入图像中,但是具体为什么这样会出错,我暂时也不清楚为什么。我猜想是因为RGB和灰度图两种图像通道数不一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值