zoukankan      html  css  js  c++  java
  • 基本图形的绘制(基于skimage)

    图形包括线条、圆形、椭圆形、多边形等。在skimage包中,绘制图形用的是draw模块,不要和绘制图像搞混了。

    一  线条

    函数调用格式:

        skimage.draw.line(r1,c1,r2,c2)

    • r1,r2: 开始点的行数和结束点的行数
    • c1,c2: 开始点的列数和结束点的列数
    • 返回当前绘制图形上所有点的坐标
    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc =draw.line(1, 150, 470, 450)#表示从(1,150)到(470,450)连一条线,返回线上所有的像素点坐标[rr,cc]
    img[rr, cc] =255
    plt.imshow(img,plt.cm.gray)

    结果如下图所示:

    如果想画其它颜色的线条,则可以使用set_color()函数,格式为:

                   skimage.draw.set_color(imgcoordscolor)

    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc =draw.line(1, 150, 470, 450)#表示从(1,150)到(470,450)连一条线,返回线上所有的像素点坐标[rr,cc]
    draw.set_color(img,[rr,cc],[0,0,255])
    plt.imshow(img,plt.cm.gray)

    结果如下图所示:

    二 圆

    函数格式:skimage.draw.circle(cycxradius)

    cy和cx表示圆心点,radius表示半径

    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc=draw.circle(150,150,50)
    draw.set_color(img,[rr,cc],[255,0,0])
    plt.imshow(img,plt.cm.gray)

    结果如下图所示:

    三 多边形

    函数格式:skimage.draw.polygon(Y,X)

    Y为多边形顶点的行集合,X为各顶点的列值集合。

    from skimage import draw,data
    import matplotlib.pyplot as plt
    import numpy as np
    img=data.astronaut()
    Y=np.array([10,10,10,60,60])
    X=np.array([100,200,400,300,200])
    rr, cc=draw.polygon(Y,X)
    draw.set_color(img,[rr,cc],[255,0,0])
    plt.imshow(img,plt.cm.gray)

    结果如下所示:

    四 椭圆

    格式:skimage.draw.ellipse(cycxyradiusxradius)

    cy和cx为中心点坐标,yradius和xradius代表长短轴。

    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc=draw.ellipse(220, 220, 30, 80)
    draw.set_color(img,[rr,cc],[255,0,0])
    plt.imshow(img,plt.cm.gray)

    结果如下图所示:

    五 贝塞儿曲线

    格式:skimage.draw.bezier_curve(y1,x1,y2,x2,y3,x3,weight)

    y1,x1表示第一个控制点坐标

    y2,x2表示第二个控制点坐标

    y3,x3表示第三个控制点坐标

    weight表示中间控制点的权重,用于控制曲线的弯曲度。

    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc=draw.bezier_curve(150,50,50,280,260,400,2)
    draw.set_color(img,[rr,cc],[255,0,0])
    plt.imshow(img,plt.cm.gray)

    结果如下所示:

    六 空心圆

    和前面的画圆是一样的,只是前面是实心圆,而此处画空心圆,只有边框线。

    格式:skimage.draw.circle_perimeter(yx,yc,radius)

    yx,yc是圆心坐标,radius是半径

    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc=draw.circle_perimeter(150,150,50)
    draw.set_color(img,[rr,cc],[255,0,0])
    plt.imshow(img,plt.cm.gray)

    结果如下所示:

    七 空心椭圆

    格式:skimage.draw.ellipse_perimeter(cycxyradiusxradius)

    cy,cx表示圆心

    yradius,xradius表示长短轴

    from skimage import draw,data
    import matplotlib.pyplot as plt
    img=data.astronaut()
    rr, cc=draw.ellipse_perimeter(220,220, 30, 80)
    draw.set_color(img,[rr,cc],[255,0,0])
    plt.imshow(img,plt.cm.gray)

    结果下图所示:

  • 相关阅读:
    Centos Another app is currently holding the yum lock
    Centos 重置密码
    Effective c#学习笔记(1)
    浅谈计算机编码
    mongodb java spring data
    VS2013 好用的插件
    xml存储bug
    VS 2008 生成操作中各个选项的差别
    程序权限控制
    给钛度产品的一些建议(Note)
  • 原文地址:https://www.cnblogs.com/Terrypython/p/9958756.html
Copyright © 2011-2022 走看看