2017-08-17 43 views
2

我試圖實現在那裏我必須獲得所有那些通過像素形成以一定角度的線(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個像素,J的灰度級的總和。我希望此代碼具有靈活性,以便我可以輕鬆找到長度爲15像素或13像素或11像素的行的總和等等。

+1

如何[LineIterator(http://docs.opencv.org/ref/2.4/dc/dd2/classcv_1_1LineIterator.html)? – dhanushka

+0

我支持使用openCV中的LineIterator! – Micka

+0

這是如何工作的? –

回答

2

你可以使用一些三角。回想一下,sin(angle) = y/x,所以y = x*sin(angle)。然而剛長你想創建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)] 
相關問題