terminate called after throwing an instance of 'cv::Exception'
what(): /home/tau/opencv/opencv-3.1.0/modules/core/src/copy.cpp:257: error: (-215) channels() == CV_MAT_CN(dtype) in function copyTo
这个错误是使用fitLine时遇到的
问题出在
void cv::fitLine( InputArray _points, OutputArray _line, int distType,
double param, double reps, double aeps )
最后一行
Mat(npoints2 >= 0 ? 4 : 6, 1, CV_32F, linebuf).copyTo(_line);
而弹出错误的在下面这行
if( _dst.fixedType() && dtype != type() )
{
CV_Assert( channels() == CV_MAT_CN(dtype) );
convertTo( _dst, dtype );
return;
}
先来看看fixedType()
bool _OutputArray::fixedType() const
{
return (flags & FIXED_TYPE) == FIXED_TYPE;
}
其中查到 FIXED_TYPE = 0x8000 << KIND_SHIFT , KIND_SHIFT =16, = 运算优先级 低于 <<
故 FIXED_TYPE 左移16位
flags 是int 变量, 目前没有找到默认初始化的值, 莫非初始化的值是 0 ?
是0的话和肯定就与FIXED_TYPE不相等了, 返回0;
对于Mat dtype就是CV_8U, CV_32F之类的像素值类型
type 就是CV_8UC1,CV_8UC2,CV_8UC3 像素值类型 + 通道
但是下面有定义
int