Python / numpy список точек на область черно-белого изображения - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь преобразовать точки непрерывного списка (между 0 и 1) в черно-белое изображение, представляющее область под / над точками списка.

plt.plot(points)
plt.ylabel('True val')
plt.show()
print("Points shape-->", points.shape)

result

Я могу сохранить изображение, созданное с помощью matplotlib, но я думаю, что это может быть неприятный обходной путь

В конце я хотел бы получить изображение с формой (224,224), где представлены белые зоны область под линией, а черная зона - за линией ...

image_area = np.zeros((points.shape[0],points.shape[0],))
# ¿?

Любые идеи или предложения о том, как подойти к этому, приветствуются! Спасибо экспертам

Ответы [ 2 ]

3 голосов
/ 08 марта 2020

Вот базовый c пример того, как вы могли бы это сделать. Поскольку для среза требуются целые числа, возможно, вам придется сначала масштабировать необработанные данные.

import numpy as np
import matplotlib.pyplot as plt

# your 2D image
image_data = np.zeros((224, 224))

# your points. Here I am just using a random list of points
points = np.random.choice(224, size=224)

# loop over each column in the image and set the values
# under "points" equal to 1
for col in range(len(image_data[0])):
    image_data[:points[col], col] = 1

# show the final image
plt.imshow(image_data, cmap='Greys')
plt.show()

enter image description here

0 голосов
/ 09 марта 2020

Спасибо, Эри c, вот решение с вашим предложением, большое спасибо!

def to_img(points):
    shape = points.shape[0]
# your 2D image
    image_data = np.zeros((shape, shape))

# your points. Here I am just using a random list of points
# points = np.random.choice(224, size=224)
    def minmax_norm_img(data, xmax, xmin):
        return (data - xmin) / (xmax - xmin)

    points_max = np.max(points)
    points_min = np.min(points)
    points_norm = minmax_norm_img(points,points_max , points_min)

# loop over each column in the image and set the values
# over "points" equal to 1
    for col in range(len(image_data[0])):
        image_data[shape-int(points_norm[col]*shape):, col] = 1

    return image_data
...