使用openCV copyTo函数时,用255初始化矩阵?

时间:2014-01-07 12:28:03

标签: opencv

当我使用openCV时     void Mat :: copyTo(OutputArray m,InputArray mask) 函数,新分配的矩阵在复制数据之前用全零初始化。有没有办法用255而不是零来初始化?

2 个答案:

答案 0 :(得分:6)

请参阅OpenCV Doc了解Mat

您可以使用像

这样的内容创建Mat

三个频道

   Mat M(cols,rows, CV_8UC3, Scalar::all(255));

单渠道

  Mat M(cols,rows, CV_8UC1, Scalar(255));

答案 1 :(得分:4)

您只需在将数据复制到输出矩阵之前分配输出矩阵。您可以创建一个使用常量初始化的矩阵,如下所示Mat A(3,3,CV_32F, Scalar(255))。或者,如果您有预先声明的矩阵A,则可以使用A.create(3,3,CV_32F)重新分配它,然后使用A = Scalar(255)使用常量对其进行初始化。

因此,在您的情况下,您可以执行以下操作:

// Create output matrix initialized with a constant
Mat output(rows, cols, CV_8UC3, Scalar(255,255,255)); 

// Copy your `input` matrix into `output` through your `mask`
input.copyTo(output, mask);