Nic*_*lli 2 python image-processing color-detection
有没有办法判断图像是否使用python作为白色背景,以及获得关于这个问题的“置信百分比”的好策略是什么?似乎互联网上的文献并没有完全涵盖这种情况,我找不到任何严格相关的内容。
我要分析的图像是典型的电子商务网站产品图片,因此它们应该在中间有一个焦点对象,只有在边框处有白色背景。
另一个可用的信息是对象应占据的最大图像空间百分比。
我会用这样的东西。
通过将最亮、最白的像素设置为 240 而不是 255 来降低图像的对比度,这样通常在图像和产品部分内发现的白色不再是纯白色。
在您的图像周围放置一个 1 像素宽的白色边框 - 这将允许下一步中的填充“流动”一直围绕边缘(即使“产品”接触框架的边缘)并“渗入”到来自所有边界/边缘的图像。
从左上角开始填充您的图像(在第 2 步之后必须是纯白色),并在匹配白色时允许 10-20% 的容差,以防背景为灰白色或略带阴影,白色会流动进入图像的所有边缘,直到它到达中心的产品。
看看你现在有多少纯白色像素 - 这些是背景像素。纯白色像素的百分比将为您提供一个信心指标,即图像是白色背景上的产品。
我会像这样从命令行使用 ImageMagick:
convert product.jpg +level 5% -bordercolor white -border 1 \
-fill white -fuzz 25% -draw "color 0,0 floodfill" result.jpg
Run Code Online (Sandbox Code Playgroud)
我将在以下 2 张图片周围放置一个红色边框,以便您可以看到 StackOverflow 白色背景上的边缘,并向您展示前后图像 - 查看结果图像中的白色量(第二张没有因为它没有白色背景)以及在路由器下的阴影处查看-fuzz.
前
后
如果您希望将其作为百分比,您可以将所有非白色像素设为黑色,然后像这样计算白色像素的百分比:
convert product.jpg -level 5% \
-bordercolor white -border 1 \
-fill white -fuzz 25% -draw "color 0,0 floodfill" -shave 1 \
-fuzz 0 -fill black +opaque white -format "%[fx:int(mean*100)]" info:
62
Run Code Online (Sandbox Code Playgroud)
前
后
ImageMagick 具有 Python 绑定,因此您可以在 Python 中执行上述操作 - 或者您可以使用 OpenCV 和 Python 来实现相同的算法。
| 归档时间: |
|
| 查看次数: |
5543 次 |
| 最近记录: |