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

Uda*_*aya 2 opencv

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

Har*_*ris 6

请参阅OpenCV Doc about Mat

你可以用类似的东西创建Mat

三通道

   Mat M(cols,rows, CV_8UC3, Scalar::all(255));
Run Code Online (Sandbox Code Playgroud)

单通道

  Mat M(cols,rows, CV_8UC1, Scalar(255));
Run Code Online (Sandbox Code Playgroud)


Ale*_*xey 6

您只需要在将数据复制到输出矩阵之前分配输出矩阵。您可以创建一个用常量初始化的矩阵,如下所示Mat A(3,3,CV_32F, Scalar(255))。或者,如果您有一个预先声明的 matrix 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);
Run Code Online (Sandbox Code Playgroud)