用 C++ 和 OpenCV 结合图片

Posted

技术标签:

【中文标题】用 C++ 和 OpenCV 结合图片【英文标题】:Combining pictures with C++ and 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。检查徽标文件的路径,检查文件是否损坏等。 【参考方案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); 

【讨论】:

以上是关于用 C++ 和 OpenCV 结合图片的主要内容,如果未能解决你的问题,请参考以下文章

阅读 vector<Mat> 或 Video ? (Opencv 和 C++)

OpenCV读取图片判断读取是否成功显示图片的代码(C++代码和Python代码)

C++ opencv读取视频保存成图片并对图片进行部分截取

关于opencv对图片添加水印

opencv结合微信二维码识别功能实现图片二维码识别

OpenCV C++ 图像叠加 (给图片加logo)