用 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++)