Python 生成倾斜正弦波的图像
如何在Python中生成以下灰度图像 下面的代码生成水平模式,但我需要一个倾斜模式Python 生成倾斜正弦波的图像,python,numpy,matplotlib,Python,Numpy,Matplotlib,如何在Python中生成以下灰度图像 下面的代码生成水平模式,但我需要一个倾斜模式 import numpy as np import matplotlib.pyplot as plt N = 256 x = np.linspace(-np.pi,np.pi, N) sine1D = 128.0 + (127.0 * np.sin(x * 8.0)) sine1D = np.uint8(sine1D) sine2D = np.tile(sine1D, (N,1)) print(sine2D.s
import numpy as np
import matplotlib.pyplot as plt
N = 256
x = np.linspace(-np.pi,np.pi, N)
sine1D = 128.0 + (127.0 * np.sin(x * 8.0))
sine1D = np.uint8(sine1D)
sine2D = np.tile(sine1D, (N,1))
print(sine2D.shape)
plt.imshow(sine2D, cmap='gray')
您可以使用来移动1D正弦数据:
import numpy as np
import matplotlib.pyplot as plt
N = 256
x = np.linspace(-np.pi,np.pi, N)
sine1D = 128.0 + (127.0 * np.sin(x * 8.0))
sine1D = np.uint8(sine1D)
sine2D = np.ndarray((N,N), dtype=np.uint8)
for i in range(N):
sine2D[i]= np.roll(sine1D,-i) # shift the 1D sin data by -i, -i increases with rows
plt.imshow(sine2D, cmap='gray')
plt.show()
输出:
如果滚动1D数据,将获得所需的倾斜图案。如果你想要一个特殊的倾斜角度,你必须在每一个倾斜行上多/少滚动1次,以使其更平坦/更陡峭
文件:
np.roll
不负责结果图像的平滑度,它是函数。您需要告诉它如何正确插值生成的数据。因此,只需为函数调用指定interpolation
关键字参数,您就可以获得以下示例:
plt.imshow(sine2D,interpolation='bilinear', cmap='gray')
这将导致更平滑的结果:
但是还有很多其他的可能性:
'bicubic'
,'spline16'
,'spline36'
。您可能还想将numpy添加到您的标记中,下面可能有一个numpy快捷方式指向我的循环。如何旋转它?如果大家都阅读这个主题,我将不胜感激,另外,请看一看谢谢你的回答。如我们所见,numpy.roll无法生成平滑图案。我认为,如果我们可以组合两个一维正弦波,一个在x方向,另一个在y方向,即类似于sin((x+y)*8.0)
,我们可以得到一个平滑的图形。然而,我还不能实现这个想法。