Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何自动裁剪出徽标图像的背景(最好是任何颜色)_Python_Image Processing_Computer Vision_Python Imaging Library_Crop - Fatal编程技术网

Python 如何自动裁剪出徽标图像的背景(最好是任何颜色)

Python 如何自动裁剪出徽标图像的背景(最好是任何颜色),python,image-processing,computer-vision,python-imaging-library,crop,Python,Image Processing,Computer Vision,Python Imaging Library,Crop,我正在尝试自动裁剪徽标周围的背景。现在我正在使用getbbox进行裁剪,但它并不总是有效 以下是我用来测试自动人行道的图像: 跑步后 # crop out background queries = [logo.crop(ImageOps.invert(logo).getbbox()) for logo in queries] queries = [logo.crop(logo.getbbox()) for logo in queries] 结果是: 正如你所看到的,除了Adobe、Goog

我正在尝试自动裁剪徽标周围的背景。现在我正在使用getbbox进行裁剪,但它并不总是有效

以下是我用来测试自动人行道的图像:

跑步后

# crop out background
queries = [logo.crop(ImageOps.invert(logo).getbbox()) for logo in queries]
queries = [logo.crop(logo.getbbox()) for logo in queries]
结果是:

正如你所看到的,除了Adobe、Google和LinkedIn中的徽标等少数情况外,它大部分都是有效的,在这些情况下,边界框并不是人们所期望的那样。有人能给我一些见解,为什么这并不总是像预期的那样,我可以如何改进它

编辑: 我试着按照评论中的建议使用阈值。它有助于谷歌和linkedin的图像,但对adobe徽标也有同样的效果

logos_gray = [logo.convert('L') for logo in logos]
threshold = 250
logos_gray = [logo.point(lambda p: p > threshold and 255) for logo in logos_gray]
logos_gray_inv = [ImageOps.invert(logo) for logo in logos_gray]
for i in range(len(logos_gray_inv)):
    logos[i] = logos[i].crop(logos_gray_inv[i].getbbox())

从:计算图像中非零区域的边界框。最有可能的情况是,某些背景不是全白色的,但可能有一些像素的强度
254
左右,因此在反转后,那里有非零像素。在
252
左右设置徽标的阈值,你应该会没事的。@HansHirse我如何准确地为RGB图像设置阈值?我需要某种复合阈值之类的,不是吗?或者我应该先对图像进行灰度化是的,事先对你的图像进行灰度化。@HansHirse我在编辑中尝试了阈值化的实现。(我承认我不完全确定Image.point函数)。不管怎么说,除了adobe的标志,它似乎起到了帮助作用。是否可能在左下边框上有一些杂散的暗像素?很可能是的。可能是压缩伪影(例如,如果您使用JPEG)。只需使用一些图像编辑软件检查徽标。从:计算图像中非零区域的边界框。最有可能的情况是,某些背景不是全白色的,但可能有一些像素的强度
254
左右,因此在反转后,那里有非零像素。在
252
左右设置徽标的阈值,你应该会没事的。@HansHirse我如何准确地为RGB图像设置阈值?我需要某种复合阈值之类的,不是吗?或者我应该先对图像进行灰度化是的,事先对你的图像进行灰度化。@HansHirse我在编辑中尝试了阈值化的实现。(我承认我不完全确定Image.point函数)。不管怎么说,除了adobe的标志,它似乎起到了帮助作用。是否可能在左下边框上有一些杂散的暗像素?很可能是的。可能是压缩伪影(例如,如果您使用JPEG)。只需使用一些图像编辑软件检查徽标。