标签 python 下的文章

首先生成一个 height*weight*3 的全零 numpy 矩阵,dtype 为 uint8。

将其 RGB 中的绿色(G)通道设置为 255(纯绿色)。

然后使用 Pillow 将其保存到本地图片,最后调用 ffmpeg 命令生成对应视频。

ffmpeg 命令行参数:

ffmpeg -framerate 24 -loop 1 -i .\cache.png -pix_fmt yuv420p -t 39.540 -vcodec libx264 green_1080p24.mp4 -y

完整代码:

- 阅读剩余部分 -

gauss_test.png

如图,需要对数据集生成对应的 HeatMap 数据,中心点值为1,向四周生成一个高斯分布。

高斯分布又叫正态分布,最近武汉新型冠状病毒的确诊人数应该就是一个很类似正态分布的图,虽然还不知道什么时候会是高峰期。

正态分布的概率密度函数为 $$f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^\frac{(x-\mu)^2}{2\sigma^2}$$,对应图像如下:

Normal Distribution PDF

根据这个公式,就可以写出生成一维高斯分布的函数:

def get_gauss(n):
    u = 0  # 均值μ
    sig = math.sqrt(1)  # 标准差δ
    x = np.linspace(u - 3*sig, u + 3*sig, n)
    y = np.exp(-(x - u) ** 2 / (2 * sig ** 2))/(math.sqrt(2*math.pi)*sig)
    y = normalize(y)
    return y

注意此时生成的高斯分布数据还需要进行归一化:

def normalize(x):
    max = x.max()
    min = x.min()
    return (x - min) / (max - min)

最后将两个一维的高斯分布矩阵相乘即可,完整代码如下:

- 阅读剩余部分 -