Python 如何获得与另一个像素成一定角度的像素值?

Python 如何获得与另一个像素成一定角度的像素值?,python,image,opencv,python-imaging-library,Python,Image,Opencv,Python Imaging Library,我试图实现一种方法,我必须获得所有这些像素的值,这些像素通过像素(I,j)以一定角度形成一条线 考虑下面的代码片段 sum = image.getpixel(((i - 7), (j + 2))) + image.getpixel(((i - 6), (j + 2))) + image.getpixel( ((i - 5), (j + 1))) + image.getpixel( ((i - 4), (j + 1))) + image.getpixel(((i - 3), (j

我试图实现一种方法,我必须获得所有这些像素的值,这些像素通过像素(I,j)以一定角度形成一条线

考虑下面的代码片段

sum = image.getpixel(((i - 7), (j + 2))) + image.getpixel(((i - 6), (j + 2))) + image.getpixel(
    ((i - 5), (j + 1))) + image.getpixel(
    ((i - 4), (j + 1))) + image.getpixel(((i - 3), (j + 1))) + image.getpixel(((i - 2), (j + 1))) + image.getpixel(
    ((i - 1), j)) + image.getpixel((i, j)) + image.getpixel(((i + 1), j)) + image.getpixel(
    ((i + 2), (j - 1))) + image.getpixel(((i + 3), (j - 1))) + image.getpixel(((i + 4), (j - 1))) + image.getpixel(
    ((i + 5), (j - 1))) + image.getpixel(((i + 6), (j - 2))) + image.getpixel(((i + 7), (j - 2)))
avg_sum = sum / 15
现在,在上面的代码中,我知道哪些像素相对于I,j以15度角形成线。因此,我能够得到所有这些像素的值


现在有一个简单的方法可以做到这一点,因为目前这段代码找到了15个像素的灰度值之和,这15个像素在15度通过i,j形成了这条线。我希望这段代码灵活,这样我就可以很容易地找到长度为15像素、13像素或11像素的行的和,以此类推。

您可以使用一些三角学。回想一下
sin(角度)=y/x
,因此
y=x*sin(角度)
。只需创建一个由
x
值组成的数组,不管您想要多长,然后将其插入
y
值的公式中即可。之后当然需要对
y
值进行四舍五入。然后你可以把它们都转换成直线的起始位置

>>> import numpy as np
>>> angle = 15*np.pi/180
>>> x = np.arange(0,10)
>>> y = np.round(np.sin(angle)*x).astype(int)
>>> [(x,y) for x, y in zip(x, y)]
[(0, 0), (1, 0), (2, 1), (3, 1), (4, 1), (5, 1), (6, 2), (7, 2), (8, 2), (9, 2)]

怎么样?我支持使用openCV中的LineIterator!这是如何工作的?问题是openCV for python中没有LineIterator