使用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初始化矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV点滴3

R6010 OpenCV copyTo函数使用时所遇到错误

R6010 OpenCV copyTo函数使用时所遇到错误

copyTo和clone的区别

opencv copyto给图片加logo

opencv4opencv教程 C++ 4Mat对象(深拷贝:clone()copyTo(),create()创建图片,zeros()eye()初始化空白图像,Scalar()创建向量)