【问题标题】:Combining pictures with C++ and OpenCV用 C++ 和 OpenCV 结合图片
【发布时间】:2016-10-17 01:52:55
【问题描述】:

我正在尝试使用C++和OpenCV来组合图片,但是出现错误。

我的代码:

错误:

imshow 中的断言失败 (size.width>0 && size.height>0)

【问题讨论】:

  • 将有问题的代码和错误粘贴为文本。不是截图。
  • 另外,您确定徽标图像在那里吗?您请求了一个名为 dota_log.png 的图像。应该是dota_logo.png
  • 当您指定的输入图像不可访问时,通常会发生此错误。检查您传递给 imshow 的 Mat 是否不为空
  • 添加if(logo.empty()) doSomethingLikePrintingErrorButDon'tTryToUseTheImage。检查徽标文件的路径,检查文件是否损坏等。

标签: c++ opencv


【解决方案1】:

imread(..., 199) 中的199 应该是什么意思?

Valid values are:

  • IMREAD_UNCHANGED 如果设置,则按原样返回加载的图像(使用 alpha 通道,否则会被裁剪)。
  • IMREAD_GRAYSCALE 如果设置,则始终将图像转换为单通道灰度图像。
  • IMREAD_COLOR 如果设置,则始终将图像转换为 3 通道 BGR 彩色图像。
  • IMREAD_ANYDEPTH 如果设置,则在输入具有相应深度时返回 16 位/32 位图像,否则将其转换为 8 位。
  • IMREAD_ANYCOLOR 如果设置,则以任何可能的颜色格式读取图像。
  • IMREAD_LOAD_GDAL 如果设置,则使用 gdal 驱动程序加载图像。
  • 其他一些降低灰度图像的选项。

通常你想在 BGR 中加载图像:

Mat img = imread("/path/to/img.png"); // IMREAD_COLOR is default value

或灰度

Mat img = imread("/path/to/img.png", IMREAD_GRAYSCALE); 

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2015-02-22
    • 2019-06-25
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多