有趣的图形

1、根据矩形边的中点不断连线(具体效果看图):

import numpy as np
import cv2
import matplotlib.pyplot as plt

def show(image):
    '''用来显示图片'''
    plt.imshow(image)
    plt.axis('off')
    plt.show()

def value(a,b,lst=[]):
    '''用递归的方式计算得到线段的中点'''
    c = (a+b)/2
    lst.append(c)
    if a+100<c:    # 设置递归停止的条件,否则会一直进行下去
        value(a,c,lst)
    if b>c+100:
        value(c,b,lst)
    return lst

image = np.zeros((500,500,3), dtype='uint8')    # 创建一张黑色的图片
show(image)
lst = value(0,image.shape[1])    # 此时lst是乱序的而且有重复值
lst = sorted(list(set(lst)))
lst.append(image.shape[1])

# 1、先画出从左往右向上的斜线
for i in lst:
    cv2.line(image, (0,int(i)), (int(i),0), (255,255,255),3)
    cv2.line(image, (int(i),image.shape[1]), (image.shape[0],int(i)), (255,255,255),3)

# 2、再画出从左往右向下的斜线
for i in lst:
    cv2.line(image, (int(i),0), (image.shape[0],image.shape[0]-int(i)), (255,255,255),3)
    cv2.line(image, (0,int(i)), (image.shape[0]-int(i),image.shape[1]), (255,255,255),3)
cv2.line(image, (0,0), (image.shape[1],image.shape[1]), (255,255,255),3)

# 3、连接横着的线条
for i in lst:
    cv2.line(image, (0,int(i)), (image.shape[0],int(i)), (255,255,255), 3)

# 4、连接竖着的线
for i in lst:
    cv2.line(image, (int(i),0), (int(i),image.shape[1]), (255,255,255),3)
show(image)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值