用python如何绘制梵高星空

谁会使用python绘制梵高的星空呀,可以教教我吗,在csdn上面找了一些资料,发现都是不能运行的

我在B站上,找了个讲解课,里面讲了图形的画法等等,希望对你有帮助,有帮助的话能点个采纳吗?
其中一集网址:(https://www.bilibili.com/video/BV1TF411V7Ei/?p=9)

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7731718
  • 这篇博客也不错, 你可以看下Python简单?会点python爬虫的博主竟然爬了自己的CSDN
  • 除此之外, 这篇博客: python实现数码管绘制的自我练习中的 非常高兴可以第一次在csdn上面完成我的第一个博客 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 作为python初学者,我开始完成第一个有关于引用库的第一次练习

  • 您还可以看一下 CSDN讲师老师的基于CSDN博客多线程爬虫的项目实战课程中的 Python爬虫岗位及行业介绍小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    使用Python绘制梵高星空的方法可以通过以下步骤实现:

    1. 下载代码文件:首先点击参考资料中的代码下载地址,下载代码文件并解压到本地。

    2. 准备数据:在代码文件的数据目录中,找到名为"star_data.json"的文件,该文件包含了绘制梵高星空所需要的星星数据。打开该文件,可以看到数据以JSON格式存储。

    3. 解析数据:使用Python的json库将JSON数据解析为Python的数据类型。代码如下所示:

    import json
    
    # 读取数据
    with open('star_data.json', 'r') as f:
        data = json.load(f)
    
    # 示例:输出数据
    print(data)
    
    1. 绘制星空:根据解析得到的数据,使用Python的绘图库(如matplotlib)绘制星空图像。根据你提供的资料,无法直接获得具体的绘图代码,因此这一部分需要根据具体需求进行开发。

    需要注意的是,绘制星空图像可能需要对数据进行一些处理,如转换坐标、调整颜色等。具体的处理方法需要根据实际情况进行选择和实现。

    以上是基于目前的资料和问题描述给出的解决方案,可以尝试按照上述步骤进行操作。如果还有其他问题或者代码无法运行,请提供更具体的信息,以便给出更准确的解答和帮助。

看见你回复这篇文章了,我改了下代码,starry_night.jpg就拿文章中案例背景图即可
上图

img

代码

from PIL import Image
import os
from numpy import *
import matplotlib as mpl
import matplotlib.pyplot as plt

if __name__ == '__main__':

    mpl.rcParams['font.sans-serif'] = [u'SimHei']  # 设置支持中文
    mpl.rcParams['axes.unicode_minus'] = False  # 正确显示负号

    A = Image.open('starry_night.jpg')
    a = array(A)

    # SVD 分解
    u_r, sigma_r, v_r = linalg.svd(a[:, :, 0])
    u_g, sigma_g, v_g = linalg.svd(a[:, :, 1])
    u_b, sigma_b, v_b = linalg.svd(a[:, :, 2])


    def restore(u, sigma, v, k):
        m, n = len(u), len(v)
        a = zeros((m, n))
        for i in range(k):
            ui = u[:, i].reshape(m, 1)
            vi = v[i].reshape(1, n)
            a += sigma[i] * dot(ui, vi)
        a[a < 0] = 0
        a[a > 255] = 255
        return rint(a).astype('uint8')


    # 重建图像
    K = 12
    plt.figure(figsize=(10, 10), facecolor='w')
    for k in range(1, K + 1):
        print(k)
        R = restore(u_r, sigma_r, v_r, k)
        G = restore(u_g, sigma_g, v_g, k)
        B = restore(u_b, sigma_b, v_b, k)
        I = stack((R, G, B), axis=2)
        plt.subplot(3, 4, k)
        plt.imshow(I)
        plt.axis('off')
        plt.title(u'奇异值个数:%d' % k)

    plt.suptitle(u'SVD与图像分解', fontsize=20)
    plt.tight_layout(pad=1, rect=(0, 0, 1, 0.95))
    plt.show()