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时,就会出现如下报错:
我在尝试中发现,当我不使用cvtcolor将RGB图转化为灰度图而是直接在imread中直接读取灰度图时,这一报错消失,因此可以判断是使用cvtcolor函数时出现了问题,出问题时cvtcolor这句代码如下:
cvtColor(g_gray, g_gray, CV_RGB2GRAY);
此时,cvtColor函数的输入输出是同一幅图像。
之后,我还是用imread读取一幅RGB图像进行进一步尝试,当我把cvtColor的输出放在一个新的Mat数组中时,该报错也消失了。
所以,最终发现问题出在了将cvtcolor函数的输出图像放在了输入图像中,但是具体为什么这样会出错,我暂时也不清楚为什么。我猜想是因为RGB和灰度图两种图像通道数不一样。