在使用Opencv copyTo(src, mask)函数对src进行有掩膜的copy时,在mask为0像素点处src本来应该有值的,但是使用该函数后却变为0了。出现该问题的原因和解决办法记录如下:
原因:
在Opencv copyTo()函数说明中写到:
@param m Destination matrix. If it does not have a proper size or type before the operation, it is reallocated.
和
When the operation mask is specified, if the Mat::create call shown above reallocates the matrix,the newly allocated matrix is initialized with all zeros before copying the data.
即:在使用mask情况下,如果src和拷贝图像尺寸不同,则会对src进行重新分配,重新分配后的src数据区全部为0。所以会出现执行copyTo后src没有之前的数据,而是变为0的现象。
解决办法:
在执行copyTo之前就将src和待拷贝图像尺寸进行统一。