python - 生成倾斜正弦波的图像

标签 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.shape)
plt.imshow(sine2D, cmap='gray')

enter image description here

最佳答案

您可以使用 numpy.roll移动一维正弦数据:

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()

输出:

resulting image

如果滚动一维数据,您将获得所需的倾斜图案。如果你想要一个特殊的倾斜角度,你必须滚动更多/更少然后每前进行 1 以使其更平坦/更陡峭。

文档:

关于python - 生成倾斜正弦波的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57534808/

相关文章:

python - 日期时间到文件时间 (Python)

python-3.x - 如何使用 matplotlib 保存图像而不显示它们?

python - 如何用一定数量的子图填充图形?

python - 使用 Numpy 进行矩阵乘法

python - 用数据框中列表中的值替换索引

python - matplotlib - 在 CentOS 上安装 - setup.py 构建失败

python - 如何让图表填满所有窗口

python - 如何通过输入的更改来自动化单行代码?

python - 比较时如何默认获取Enum值?

Python,函数式编程,映射到更高层次