目录
一、实验目的
- 体会基本的python编程方法;
- 学习python中的各类函数;
- 学习如何用Python画图。
二、实验要求
1、操作书上第九章的内容
2、请画出如图2.png所示的图形
3、通过编码获得fcity.jpg的手绘图像(如beijing.jpg所示)
三、实验代码
1、略
import turtle as t
#t.Turtle().screen.delay(0) #加速
s=0
t.pen
t.seth(0)
length=0
while (length !=400): #当边长达到400时循环结束
t.penup() #提起画笔
t.goto(s,s) #新的起点坐标
t.pendown() #放下画笔
for i in range(4):
t.fd(length) #边长
t.left(90) #画笔方向向左旋转90度
length += 10 #边长加10
s -= 5 #改变画笔起点
t.hideturtle() #绘图结束后把笔头隐藏起来
t.done() #绘图结束后使窗口停留
from PIL import Image
import numpy as np
a = np.asarray(Image.open('./fcity.jpg').convert('L')).astype('float')
depth = 10. # (0-100)
grad = np.gradient(a) #取图像灰度的梯度值
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/2.2 # 光源的俯视角度,弧度值
vec_az = np.pi/4. # 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) #光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) #光源对y 轴的影响
dz = np.sin(vec_el) #光源对z 轴的影响
b = 255*(dx*uni_x + dy*uni_y + dz*uni_z) #光源归一化
b = b.clip(0,255)
im = Image.fromarray(b.astype('uint8')) #重构图像
im.save('./beijing.jpg')
四、实验结果
图1 题1结果图
图2 题2结果图
五、实验体会
- 学会了使用Python中简单的函数;
- 初步掌握了利用Python画图的方法和根据图片用Python手绘图像的方法。