首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程的方式(最好是在python中使用PIL )计算带有剥离背景的对象的像素总数?

问如何以编程的方式(最好是在python中使用PIL )计算带有剥离背景的对象的像素总数?
EN

Stack Overflow用户
提问于 2019-10-05 17:24:40
回答 1查看 426关注 0票数 4

我有多张照片,每一张都有一个背景被移除的物体。图片大小为500×400像素。

我正在寻找一种以编程方式(最好使用python)的方法来计算图片中(在没有背景的空间中)图像的总像素数。

我使用Python中的PIL包获取图像对象的维度,如下所示:

代码语言:javascript
复制
print(image.size)

该命令成功地生成了整个图片的尺寸(500x400像素),但没有生成图片中感兴趣的对象的尺寸。

有人知道如何使用python计算图片中对象的尺寸吗?下面是图片的一个例子。

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-05 17:48:12

你可以用一些不存在于图像中的颜色来填充背景像素,例如洋红色,然后计数洋红像素并从图像中的像素数(宽度x高度)中减去这个数字。

下面是一个示例:

代码语言:javascript
复制
#!/usr/bin/env python3

from PIL import Image, ImageDraw
import numpy as np

# Open the image and ensure RGB
im = Image.open('man.png').convert('RGB')

# Make all background pixels magenta
ImageDraw.floodfill(im,xy=(0,0),value=(255,0,255),thresh=50)

# Save for checking
im.save('floodfilled.png')

# Make into Numpy array
n = np.array(im)

# Mask of magenta background pixels
bgMask =(n[:, :, 0:3] == [255,0,255]).all(2)
count = np.count_nonzero(bgMask)

# Report results
print(f"Background pixels: {count} of {im.width*im.height} total")

样本输出

代码语言:javascript
复制
Background pixels: 148259 of 199600 total

​

​

不知道手臂和身体之间的封闭区域对你有多重要.如果你只是替换所有灰色,而不使用充水技术,你冒着制造,比如说,衬衫洋红色的风险,并把它作为背景。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58250682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档