利用 Python 进行数据分析实验(七)
一、实验目的
使用Python解决问题
二、实验要求
自主编写并运行代码,按照模板要求撰写实验报告
三、实验步骤
- 操作书上第九章内容
- 请画出如图2.png所示的图形
- 通过编码获得fcity.jpg的手绘图像(如beijing.jpg所示)
四、实验结果
T2
"""
请画出如图2.png所示的图形
"""
import turtle as t
t.pen(speed=0)
xy = -300
# t.seth(0)
while (xy <= 0):
t.penup()
t.goto(xy, xy) # pendown是默认状态
for i in range(4):
t.pendown()
t.forward(2 * (-xy))
t.left(90)
t.penup()
xy = xy + 10
t.done()
# t.getcanvas().postscript(file = "T2.eps")
T3
"""
通过编码获得fcity.jpg的手绘图像(如beijing.jpg所示)
"""
import numpy as np
from PIL import Image
image_array = np.asarray(Image.open('./picture/fcity.jpg').convert('L')).astype('float')
depth = 8 # 范围0~100,数值过高则亮部细节过度,数值过低则缺失亮部细节
grad = np.gradient(image_array)
grad_x, grad_y = grad
grad_x = grad_x * depth / 100
grad_y = grad_y * depth / 100
A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1)
uni_x = grad_x / A
uni_y = grad_y / A
uni_z = 1. / A
# 适当调整了光源的位置,补充部分亮部缺失的细节
vec_el = np.pi / 1.8
vec_az = np.pi / 7
dx = np.cos(vec_el) * np.cos(vec_az)
dy = np.cos(vec_el) * np.sin(vec_az)
dz = np.sin(vec_el)
b = 255 * (dx * uni_x + dy * uni_y + dz * uni_z)
b = b.clip(0, 255)
im = Image.fromarray(b.astype('uint8'))
im.save('./picture/res.jpg')