【问题标题】:Initialize the matrix with 255 when using openCV copyTo function?使用openCV copyTo函数时用255初始化矩阵?
【发布时间】:2014-01-07 12:28:03
【问题描述】:

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

【问题讨论】:

    标签: opencv


    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 1970-01-01
        • 2018-06-13
        • 1970-01-01
        相关资源
        最近更新 更多