1

我需要在现有图像上使用scipy.spatial.Voronoi. 我已使用以下方法将图像作为numpy数组导入matplotlib.pyplot

img_file = 'my_image.png'
img = plt.imread(os.path.join(data_dir, img_file))
fig = plt.figure()
ax = fig.add_subplot(111)

当我显示图像时,它可以正常工作:

ax.imshow(img)

我的初始图像

然后我想在它上面添加一个 Voronoi 图(对于我任意选择的一些点),所以我这样做:

points = np.array([[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]])

vor = Voronoi(points)
voronoi_plot_2d(vor, ax=ax)
plt.show()

我得到了这个: 尝试在图像上覆盖图形失败

当我只绘制图表时,这就是我得到的: Voronoi tessellation

因此,我想通过使用相同的轴ax(任何帮助弄清楚如何将图像放在背景和顶部的 Voronoi 将不胜感激!

4

1 回答 1

2

它确实有效,我猜需要正确选择 voronoi 点:

import matplotlib.pylab as plt
import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d
import scipy.ndimage as ndimage

img_file = 'bear.png'
img = plt.imread(img_file)

points = [] 
for i in range(100):
    points.append([np.random.uniform(0, img.shape[0]),np.random.uniform(0, img.shape[1])])
points = np.array(points)

vor = Voronoi(points)

fig = plt.figure(figsize=(20,20))
ax = fig.add_subplot(111)
ax.imshow(ndimage.rotate(img, 90))
voronoi_plot_2d(vor, point_size=10, ax=ax)
plt.show()

在此处输入图像描述

于 2019-03-25T21:55:22.310 回答