从行下面的数组返回行/列值

2024-04-25 22:46:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是根据长度和角度在二值图像上生成多行。然后返回所有行/列值以及这些行下面的像素值,并将它们放入python列表中。 为了生成这些行,我编写了一个函数,输出每行的起始坐标和结束坐标。使用这些坐标,我想生成线并提取值。你知道吗

要从像素(0,1)到(3,1)的水平线提取值,我可以执行以下操作:

a = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
pixels = a[1, 0:3]

或垂直:

pixels = a[0:3, 1]

返回该行下所有像素值的数组:

array([3, 4, 5])
array([1, 4, 7])

如何在有角度的直线上应用此方法?那么对于x1,y1和x2,y2?这些返回(语法)错误:

a([0,0], [2,2])
a([0,0]:[2,2])
a[0,0:2,2]

我在寻找类似于Matlab中的improfile的东西。 非常感谢你的帮助!你知道吗


Tags: 方法函数图像列表np像素数组array
1条回答
网友
1楼 · 发布于 2024-04-25 22:46:18

您可以使用scikits image的draw模块和draw.line方法:

>>> from skimage.draw import line
>>> y0 = 1; x0 = 1; y1 = 10; x1 = 10;
>>> rr, cc = line(y0, x0, y1, x1)

rrcc将包含行通过的值的行和列索引。您可以通过以下方式访问这些值:

>>> values = img[rr, cc]

假设img是图像的名称。你知道吗

请注意,对于不同于45度间隔的角度,此实现不提供插值或亚像素精度。它将在点a和点B之间创建一条穿过整个像素的离散阶梯线。你知道吗

相关问题 更多 >

    热门问题