记录下使用opencv过程中的一个报错:
OpenCV Error: Assertion failed (mask.empty() || (mask.depth() == 0 && (mcn == 1 || mcn == cn) && size == mask.size)) in setTo, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/copy.cpp, line 525
terminate called after throwing an instance of 'cv::Exception'
what(): /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/copy.cpp:525: error: (-215) mask.empty() || (mask.depth() == 0 && (mcn == 1 || mcn == cn) && size == mask.size) in function setTo
代码是:
cv::Mat src(480, 640, CV_8UC1, cv::Scalar(0));
cv::Mat taget;
src.copyTo(taget);
cv::Mat mask(480, 640, CV_8UC3, cv::Scalar(0));
taget.setTo(255,mask);
出现错误的原因是:src是单通道的,但是mask是3通道的,所以使用setTo()函数时两图像通道数不匹配。