使用openCV copyTo函数时用255初始化矩阵?
Posted
技术标签:
【中文标题】使用openCV copyTo函数时用255初始化矩阵?【英文标题】:Initialize the matrix with 255 when using openCV copyTo function? 【发布时间】:2014-01-07 12:28:03 【问题描述】:当我使用 openCV void Mat::copyTo(OutputArray m, InputArray 掩码) 函数,新分配的矩阵在复制数据之前用全零初始化。有没有办法用 255 而不是零进行初始化?
【问题讨论】:
【参考方案1】:关于Mat的OpenCV文档见
您可以创建具有类似内容的 Mat
三通道
Mat M(cols,rows, CV_8UC3, Scalar::all(255));
单频道
Mat M(cols,rows, CV_8UC1, Scalar(255));
【讨论】:
【参考方案2】:您只需要在将数据复制到它之前分配输出矩阵。您可以创建一个使用常量初始化的矩阵,如下所示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);
【讨论】:
以上是关于使用openCV copyTo函数时用255初始化矩阵?的主要内容,如果未能解决你的问题,请参考以下文章
opencv4opencv教程 C++ 4Mat对象(深拷贝:clone()copyTo(),create()创建图片,zeros()eye()初始化空白图像,Scalar()创建向量)