【问题标题】:Create blank image in OpenCV C++在 OpenCV C++ 中创建空白图像
【发布时间】:2020-05-02 04:15:12
【问题描述】:

我正在尝试使用 OpenCV 创建一个空白图像(稍后将被填充),但它必须与预定义图像的大小相同作为新图像。我尝试了以下代码:

(图片为显示成功的lena图片)

    Mat lena1(Size(image.cols,image.rows),CV_8UC1);
    namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
    //imshow( "Display Image", image );
    imshow("blank", lena1);

但由于某种原因,它仍然显示“图像”而不是 lena1(那将是与预定义图像具有相同大小的空白图像)。

谢谢!

【问题讨论】:

  • 您正确地创建了空白图片,但我没有看到任何代码可以用 lena1 像素实际填充您的矩阵,所以imshow 当然会显示空白图片。
  • 这个lena1(Size(image.cols,image.rows),CV_8UC1); 不是创建空白图像的正确方法。它使用随机值初始化图像,或者我们应该说它使图像未初始化,您应该使用重载将 Scalar 与所有组件设置为 0:lena1(Size(image.cols,image.rows),CV_8UC1,cv::Scalar());

标签: c++ image opencv opencv4


【解决方案1】:

要创建一个空白图像(用零填充的图像),请使用 cv::Mat::zeros()。它将创建一个矩阵,其中包含您选择的维度和类型,并用零填充。

在您的情况下,请使用以下代码,

Mat lena1 = Mat::zeros(Size(image.cols,image.rows),CV_8UC1);

要用预加载的图像填充它,

image.copyTo(lena1);

【讨论】:

  • 谢谢!正是这样,非常感谢,完全解决了!
【解决方案2】:

如果您想创建具有单一颜色的图像,您也可以这样做

Mat blueImage(cols, rows, CV_8UC1, Scalar(0, 0, 255));

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 2011-06-07
    • 1970-01-01
    • 2015-01-03
    • 2018-03-08
    • 1970-01-01
    • 2011-02-03
    • 2019-10-31
    • 2012-06-05
    相关资源
    最近更新 更多