使用opencv_createsamples

时间:2018-11-09 10:49:35

标签: opencv png image-recognition

我目前正在从事一个项目,该项目包括使用OpenCV命令在给定图像中检测手,并且由于缺少正图像,我试图使用命令 opencv_createsamples 人工创建它们。 ,背景图片(或负片图片)为.jpg格式,而我的正面图片为.png格式且背景透明,则预期结果应为:    enter image description here

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

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 获得与第一个图像相似的结果?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

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

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

因此,我认为鉴于此信息,使用此功能无法获得所需的结果。