Python的基本绘图<三>

学习目标:

今天继续对示例进行分析,进一步巩固Turtle库的相关语法。

学习内容

示例1 绘制圆+正方形,绘制要求:
a.绘制一个正方形并且内切一个填充的圆;
b.正方形边长为100并且轮廓线为红色;
c.内切圆轮廓线为红色并且填充为黄色;
d.绘图过程中隐藏画笔,可以清晰看见图形绘制过程。

代码演示:

import turtle as t
t.speed(8)
t.pencolor("red")
t.pensize(2)
t.seth(0)
t.forward(50)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.goto(0,0)

t.seth(0)
t.fillcolor("yellow")
t.begin_fill()
t.circle(50)
t.end_fill()
t.hideturtle()
t.done()

运行结果演示:
在这里插入图片描述

示例2 绘制半圆+三角形,上边是一个红色轮廓、黄色填充的边长为300的等边三角形,下边是一个绿色填充,半径为150的半圆,绘制要求:
a.画布背景为白色,等边三角形为红色轮廓,黄色填充;
b.半圆为绿色填充并且与等边三角形在底边的中点处相切;
c.能看见绘制过程并且隐藏画笔。

代码演示:

import turtle as t
t.speed(10)
t.pensize(2)
#画半圆
t.fillcolor("green")
t.begin_fill()
t.seth(0)
t.forward(150)
t.left(90)
t.circle(150, 180)
t.goto(0, 0)
t.end_fill()

t.penup()
t.goto(0, 150)
t.pendown()
t.pencolor("red")
t.pensize(2)
t.fillcolor("yellow")
t.begin_fill()
t.seth(0)
t.forward(150)
t.seth(120)
t.forward(300)
t.left(120)
t.forward(300)
t.goto(0, 150)
t.end_fill()

t.hideturtle()
t.done()

运行结果演示:
在这里插入图片描述
示例3 绘制正六边形,绘制要求:
a.背景为白色,正六边形和三角形的填充分别为红色和绿色;
b.图形中间为边长为150的正六边形,周围是六个等边三角形;
c.正六边形的上下两边要求与X轴方向平行;
d.绘图过程中隐藏画笔,并能清楚看见图形绘制过程。

代码演示:

import turtle as t
t.speed(10)

#绘制正六边形
t.fillcolor("red")
t.begin_fill()
t.seth(0)
t.penup()
t.forward(150)
t.pendown()
t.left(120)
t.forward(150)
for i in range(5):
    t.left(60)
    t.forward(150)
t.end_fill()
t.penup()
t.goto(0,0)

#绘制三角形
for i in range(6):
    t.penup()
    t.seth(i * 60)
    t.forward(150)
    t.left(60)
    t.pendown()
    t.fillcolor("green")
    t.begin_fill()
    t.forward(150)
    t.left(120)
    t.forward(150)
    t.left(120)
    t.forward(150)
    t.end_fill()
    t.penup()
    t.goto(0, 0)

t.hideturtle()
t.done()

运行结果演示:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个图像处理的问题,需要使用Python编程语言和一些图像处理库来实现。以下是代码实现: ```python import numpy as np import matplotlib.pyplot as plt import imageio # 读入一幅图像 img = imageio.imread('lena.png') plt.imshow(img, cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() # 计算图中每个灰度级的频数、频率 hist, bins = np.histogram(img.flatten(), 256, [0, 256]) freq = hist / np.sum(hist) # 从频率出发计算该图像的自信息、信息熵 eps = 1e-10 info = -np.log2(freq + eps) entropy = np.sum(-freq * np.log2(freq + eps)) # 可视化显示原图、灰度级频数、自信息和信息熵 plt.figure(figsize=(10, 8)) plt.subplot(2, 2, 1) plt.imshow(img, cmap='gray') plt.title('Original Image') plt.axis('off') plt.subplot(2, 2, 2) plt.bar(bins[:-1], hist, width=1) plt.title('Histogram') plt.xlabel('Intensity') plt.ylabel('Frequency') plt.subplot(2, 2, 3) plt.imshow(info[img], cmap='gray') plt.title('Self Information') plt.axis('off') plt.subplot(2, 2, 4) plt.text(0.5, 0.5, f'Entropy = {entropy:.2f}', ha='center', va='center', fontsize=20) plt.axis('off') plt.show() ``` 解释一下代码: 1. 读入一幅图像使用 `imageio.imread()` 函数,存储在 `img` 变量中。 2. 计算图像中每个灰度级的频数和频率,使用 `numpy.histogram()` 函数。 3. 从频率出发计算该图像的自信息和信息熵,使用 `numpy.log2()` 函数和一些基本运算。 4. 可视化显示原图、灰度级频数、自信息和信息熵,使用 `matplotlib.pyplot` 库的函数进行绘图。 注意,这里的图像是灰度图像,如果是彩色图像需要将其转换为灰度图像。同时,如果想要计算多个图像的自信息和信息熵,可以将上述代码封装成一个函数并循环调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值