python,用turtle画校徽

运用python和turtle编程程序,画淄博师范高等专科学校的校徽,要详细的程序步骤

img

img


import cv2
import turtle as t

img = cv2.imread('1.png')
shape = img.shape
t.colormode(255)
t.tracer(4000)
t.penup()
t.goto(-shape[1]/2,shape[0]/2)



for i in range(shape[0]):
    t.pendown()
    for j in range(shape[1]):
        [b,g,r] = img[i][j]
        t.color((r,g,b))
        t.fd(1)
    t.penup()
    t.goto(-shape[1]/2,shape[0]/2-i)
    t.update()
t.done()

一般是这么画的,不失真,不过这个校徽图案相对简单,可以考虑纯手绘

import turtle as t
import cv2

img = cv2.imread('logo.png')
shape = img.shape #计算图像像素
t.colormode(255) #设置颜色模式
t.tracer(False) #关闭轨迹
t.penup() #画笔抬起,蹄冻画笔不会有痕迹
t.goto(-shape[1]/2,shape[0]/2) #向左上移动图像一半的大小,画出来图像居中
for i in range(shape[0]): #以高的像素为次数循环
    t.pendown() #画笔落下
    for j in range(shape[1]): #依次绘制每一行的像素点
        [b,g,r] = img[i][j] #取每个像素点的颜色
        t.color((r,g,b)) #设置画笔颜色
        t.fd(1) #画一个像素
    t.penup() #画笔抬起
    t.goto(-shape[1]/2,shape[0]/2-i) #移动到最左侧
    t.update() #更新显示当前完成的图像
t.done()

只有几分像,待解决的是红色多边形的描边坐标要费很多时间,还有文字输出的旋转问题,网上暂时也没找到解决方案

import turtle as t

def Circle(x,y,R):
    t.setheading(0)
    t.up()
    t.goto(0,y-R)
    t.down()
    t.circle(R,360)

t.speed(0)

t.pensize(2)
Circle(0,0,300)

t.left(90)
t.pensize(1)
Circle(0,0,230)

s1 = '淄博师范高等专科学校'
s2 = ' '*9+'ZIBO NORMAL COLLEGE'

t.up()
t.goto(-280,20)
t.left(90)
for i in s1:
    t.write(i, font=('隶书',25,'normal'))
    t.rt(180/len(s1))
    t.fd(84)

t.up()
t.goto(-245,-50)
t.setheading(-90)

for i in s2:
    t.write(i, font=('隶书',22,'normal'))
    t.lt(4.8)
    t.fd(20)

t.color('red')
t.goto(-140,-280)
t.write("Z", font=('微软雅黑',330,'normal'))

t.hideturtle()
t.mainloop()

这种方法是用OpenCV画的,跟原来的一模一样。
首先得在终端运行这行脚本(安装OpenCV):

pip install opencv-python

然后再用Python运行这些代码:

import turtle as t
import cv2
 
img = cv2.imread('logo.png')
shape = img.shape
t.colormode(255)
t.tracer(False)
t.penup()
t.goto(-shape[1]/2,shape[0]/2)
for i in range(shape[0]):
    t.pendown()
    for j in range(shape[1]):
        [b,g,r] = img[i][j]
        t.color((r,g,b))
        t.fd(1)
    t.penup()
    t.goto(-shape[1]/2,shape[0]/2-i)
    t.update()
t.done()

望采纳。

先画个圆,定位
其它慢慢画