Я рисую коллекцию прямоугольников с matplotlib.patches
. Мой код:Как я могу получить пиксельные цвета в matplotlib?
import matplotlib.pyplot as plt
import matplotlib.patches as patches
fig = plt.figure(figsize=(14, 10))
for i in rectangles_list:
ax1 = fig.add_subplot(111, aspect='equal')
ax1.add_patch(patches.Rectangle(
(x[i], y[i]),
width[i],
height[i],
alpha = 1.0,
facecolor = colors_list[i]
)
)
plt.show()
Прямоугольники могут быть перекрывающимися, поэтому некоторые из них могут быть полностью скрыты. Знаете ли вы, можно ли получить цвета видимых прямоугольников? Я имею в виду цвета прямоугольников, которые не полностью скрыты и, следовательно, могут быть фактически просмотрены пользователем. Я думал о некоторой функции, которая возвращает цвет пикселей, но более разумные идеи приветствуются. Если возможно, я бы предпочел не использовать PIL. К сожалению, я не могу найти какое-либо решение в Интернете.
Я надеваю Не думаю, что есть встроенные методы для этого с помощью matplotlib. Однако вы можете найти [стройный] (https://pypi.python.org/pypi/Shapely) полезный. (См. [Union] (http://toblerity.org/shapely/manual.html#object.union) и [содержит] (http://toblerity.org/shapely/manual.html#object.contains).) – unutbu
Не удалось запустить ваш код, пропуская 'rectangles_list'. Как насчет уменьшения значения альфа, чтобы вы могли видеть что-либо за верхним прямоугольником. – hashmuke
Я думаю, что должно быть возможно обернуть 'fig.canvas.tostring_argb()' в массив ARGB через 'numpy', чтобы получить все цвета на экране. Не уверен, что теперь приступить, но может быть началом. –