Почему мой массив возвращает повторное одно значение - PullRequest
2 голосов
/ 01 июля 2019

У меня есть этот код, который должен возвращать список различных пространственных расстояний.Однако, когда я печатаю массив, это только одно значение, заполненное в массиве, что явно неверно.Логика заключается в следующем:

Первый шаг: найдите как можно больше возможностей определения местоположения (x, y), затем

создайте изображение эллипса относительно угла, который должен быть зафиксирован (тета), иa location (x, y)

Секунда: вычислить пространственное расстояние между пикселями эллипса и абстрактным двоичным изображением пример изображения оба изображения с одинаковыми размерами, поскольку они должны рассматриваться какмассивы

Третье: сохранить пространственные расстояния в массиве / списке

combinations = []

def points (x,y):
    dx = 5
    dy = 5
    return x + dx, y + dy

for x in range(0, 10):
    for y in range(0, 10):
        combinations.append(points(x,y))

print(combinations)
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from scipy.spatial import distance
import scipy.misc
im = scipy.misc.imread(r'C:\Users\mbore\Pictures\irregular1.png', flatten=False, mode='L')


#to store the spatial_distances calculated
distances = []


#getting the dimensions of the image -> y
yDim = im.shape[0]

#getting the dimensions of the image -> x
xDim = im.shape[1]


#initialize empty array this array will receive all the white pixels 
a = np.empty([100,100])

for i in range(yDim):
    for j in range (xDim): 
        if np.any(im[i,j]) == 0:
            a = np.append(a,im[i,j],axis=None)

def ellipse(x, y):
    value = (x*x) + (y*y)/3
    if (value >= 600):
        return 0
    else:
        return 1

def translate(x, y, DX, DY):
    return (x- DX, y - DY)

def rotate(x, y):
    theta = np.radians(45)
    matrix = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
    return matrix@(x,y)

data = np.zeros((100,100))

for i in range(0, 100):
    for j in range(0, 100):
        for DX,DY in combinations:
            (x, y) = translate(i,j, DX, DY)
            (x, y) = rotate(x, y)
            data[i] = ellipse(x, y)
            a = a.flatten()
            data = data.flatten()
            a = a[0:10000]
            spatial_distance = distance.hamming(data,a)
            distances.append(spatial_distance)



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...