gpt4 book ai didi

python - 将图像分割成辐条并计算每个辐条中的黑色像素数

转载 作者:行者123 更新时间:2023-12-01 09:16:41 26 4
gpt4 key购买 nike

在Python中,我试图将图像分成辐条并计算每个辐条中黑色像素的数量。最终目标是生成图像的天空 View 系数,但任何有关分离成辐条(围绕图像中心的圆的三角形)的帮助都将非常感激。

例如,我有一个用鱼眼镜头捕获的半球形图像(下面绘制的示例),我想将圆形图像分成围绕中心的三角形(如车轮中的辐条或披萨片)

circle divided into triangles like pizza slices or spokes around a wheel

圆圈可能并不总是位于图像上的同一位置,并且最初不会被分成线条,因为它是天空的半球形图像。因此,作为示例,图像看起来更像是这样的:

example of image with no division lines

无论圆在哪里,我都需要相同数量的线段,例如 8

最佳答案

我没有时间像平常那样给出完整的答案,但我想贡献一些小东西,而且没有人说答案必须完整。

第 1 步 - 修剪黑色以找到半径

您可以修剪掉黑色像素,得到一个正方形,中间有您想要的内切圆。您可以使用 numpy 检查图像/ndarray 的行/列中的所有元素是否为零,然后将它们切片。

或者您可以使用this method .

一旦你有了一个正方形,如果你取它的一半宽度,你就会知道圆的半径和中心坐标。

enter image description here

第 2 步 - 生成蒙版

绘制饼图来掩盖所需的像素。我在这里画了 3 个切片来演示如何绕圆移动,但您一次只需要一个。

下面是一些绘制前几个饼图切片的代码,可用于掩盖您想要的部分:

#!/usr/local/bin/python3

import PIL.ImageDraw as ImageDraw,PIL.Image as Image, PIL.ImageShow as ImageShow

im = Image.new("RGB", (400,400))
draw = ImageDraw.Draw(im)

sectors=8
angle=360/sectors

# Draw first sector bright white - fill colour is rgb(255,255,255)
startangle=-90
draw.pieslice((0,0,400,400),startangle,startangle+angle,fill=(255,255,255))

# Draw second sector slightly darker
startangle+=angle
draw.pieslice((0,0,400,400),startangle,startangle+angle,fill=(223,223,223))

# Draw third sector slightly darker still
startangle+=angle
draw.pieslice((0,0,400,400),startangle,startangle+angle,fill=(192,192,192))

im.show()

enter image description here

显然,在您完成的代码中,此步骤将是对所有八个切片进行 for 循环的开始,您将一次执行一个切片。

第 3 步 - 敷面膜

因此,如果您现在拍摄如下所示的蒙版图像:

enter image description here

并将其反转(否定),然后将其叠加到原始图像上,在每个像素位置选择两个图像中较亮的图像,您将得到这个(之后我人为地添加了一个黑色边框,以便您可以看到它的范围) :

enter image description here

您可以使用numpy.maximum()选择更亮的像素,如图here .

第 4 步 - 计算所需像素

您现在可以希望计算黑色(即零值)像素或白色像素,并从整个形状的面积中减去。

This link展示了一种方法。还有其他的。

关于python - 将图像分割成辐条并计算每个辐条中的黑色像素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51189114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com