【发布时间】:2014-01-07 12:28:03
【问题描述】:
当我使用 openCV void Mat::copyTo(OutputArray m, InputArray 掩码) 函数,新分配的矩阵在复制数据之前用全零初始化。有没有办法用 255 而不是零进行初始化?
【问题讨论】:
标签: opencv
当我使用 openCV void Mat::copyTo(OutputArray m, InputArray 掩码) 函数,新分配的矩阵在复制数据之前用全零初始化。有没有办法用 255 而不是零进行初始化?
【问题讨论】:
标签: opencv
关于Mat的OpenCV文档见
您可以创建具有类似内容的 Mat
三通道
Mat M(cols,rows, CV_8UC3, Scalar::all(255));
单频道
Mat M(cols,rows, CV_8UC1, Scalar(255));
【讨论】:
您只需要在将数据复制到它之前分配输出矩阵。您可以创建一个使用常量初始化的矩阵,如下所示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);
【讨论】: