【问题标题】:How can I combine a transparent background image in png format with jpg images using opencv_createsamples?如何使用 opencv_createsamples 将 png 格式的透明背景图像与 jpg 图像结合起来?
【发布时间】:2019-04-12 22:29:04
【问题描述】:

我目前正在开展一个项目,该项目包括使用 OpenCV 命令检测给定图像中的手,由于缺少正图像,我尝试使用命令 opencv_createsamples 人工创建它们,背景图像(或负图像)为.jpg 格式,而我的正图像为.png 格式,具有透明背景,预期结果应类似于:

但是运行这个命令后我得到了什么:

opencv_createsamples -img pos2/img.png -bg bg2.txt -info info/info.lst -pnginput info -maxxangle 0.5 -maxyangle 0.5 -maxzangle 0.5 -num 405 哪里:

  1. img.png 包含透明背景的手
  2. bg2.txt 负 jpg 图片(或背景)列表
  3. info 是创建所有样本的文件夹
  4. info.lst 是一个文件,其中包含图像路径以及每个正图像的位置和数量

曾经:

如您所见,正面图像仍然具有白色背景,并且没有预期的透明度(图像很小,因为它是 100x100,而正面图像是 50x50)。

我的问题是,有没有办法使用命令 opencv_createsamples 获得类似于第一张图像的结果?

【问题讨论】:

    标签: opencv png image-recognition


    【解决方案1】:

    我快速浏览了(我认为)使用的函数的源代码:

    https://github.com/opencv/opencv/blob/master/apps/createsamples/utility.cpp

    你可以看到,每次调用imread,第二个参数都是IMREAD_GRAYSCALE。这意味着无论源图像格式是什么,它都将始终转换为灰度。如果图像中存在 Alpha 通道,则会得到 discarded

    所以我认为鉴于此信息,使用此功能无法获得您想要的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 2010-12-14
      • 2012-02-26
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多