我目前正在从事一个项目,该项目包括使用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
哪里
是:
如您所见,正图像仍然具有白色背景,并且没有预期的透明度(图像较小,因为它是100x100,正图像是50x50)
我的问题是,有没有一种方法可以使用命令 opencv_createsamples 获得与第一个图像相似的结果?
感谢您的帮助
答案 0 :(得分:1)
我快速浏览了(我认为)使用过的函数的源代码:
https://github.com/opencv/opencv/blob/master/apps/createsamples/utility.cpp
您会看到,每次调用imread
时,第二个参数就是IMREAD_GRAYSCALE
。这意味着无论源图像格式是什么,都将始终将其转换为灰度。如果图像中存在Alpha通道,它将获得discarded。
因此,我认为鉴于此信息,使用此功能无法获得所需的结果。