1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python数字图像处理之基本图形的绘制

Python数字图像处理基础——图形绘制

大家好,我是本际云服务器推荐网的小编小本本。今天我要为大家介绍Python数字图像处理中的一个基础内容——图形绘制。在本文中,我们将会涉及到基本图像图形的一些绘制。具体的内容包括线条、圆形、椭圆形、多边形、贝塞儿曲线、空心圆和空心椭圆。下面就让我为大家详细讲解一下。

python数字图像处理之基本图形的绘制

绘制线条

在skimage包中,绘制线条用的是draw模块,函数调用格式为:skimage.draw.line(r1,c1,r2,c2),其中r1、r2为开始点的行数和结束点的行数,c1、c2为开始点的列数和结束点的列数。该函数返回当前绘制图形上所有点的坐标。例如,调用draw.line(1,5,8,2)表示从(1,5)到(8,2)连一条线,返回线上所有的像素点坐标[rr,cc]。

如果想画其它颜色的线条,则可以使用set_color()函数。例如,使用draw.set_color(img,[rr,cc],[255,0,0])绘制红色线条。

下面是使用draw.line()和draw.set_color()绘制线条的代码和效果图:

from skimage import draw, data
import matplotlib.pyplot as plt
img = data.chelsea()
rr,cc=draw.line(1,150,470,450)
img[rr,cc]=255 # 改变颜色
plt.imshow(img,plt.cm.gray) #显示图像
绘制线条效果图

绘制圆

在skimage包中,绘制圆形用的是draw模块,函数格式为skimage.draw.circle(cy,cx,radius),其中cy和cx表示圆心点,radius表示半径。

下面是使用draw.circle()函数绘制圆形的代码和效果图:

from skimage import draw, data
import matplotlib.pyplot as plt
img = data.chelsea()
rr,cc=draw.circle(150,150,50)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)
绘制圆形效果图

绘制多边形

在skimage包中,绘制多边形用的是draw模块,函数格式为skimage.draw.polygon(Y,X),其中Y为多边形顶点的行集合,X为各顶点的列值集合。

下面是使用draw.polygon()函数绘制多边形的代码和效果图:

from skimage import draw, data
import matplotlib.pyplot as plt
import numpy as np
img = data.chelsea()
Y=np.array([10,10,60,60])
X=np.array([200,400,400,200])
rr,cc=draw.polygon(Y,X)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)
绘制多边形效果图

绘制椭圆

在skimage包中,绘制椭圆用的是draw模块,函数格式为skimage.draw.ellipse(cy,cx,yradius,xradius),其中cy和cx为中心点坐标,yradius和xradius代表长短轴。

下面是使用draw.ellipse()函数绘制椭圆的代码和效果图:

from skimage import draw, data
import matplotlib.pyplot as plt
img = data.chelsea()
rr,cc=draw.ellipse(150,150,30,80)
draw.set_color(img,[rr,cc],[255,0,0])
plt.imshow(img,plt.cm.gray)
绘制椭圆效果图

绘制贝塞儿曲线

在skimage包中,绘制贝塞尔曲线用的是draw模块,函数格式为skimage.draw.bezier_curve(y1,x1,y2,x2,y3,x3,weight),其中y1,x1表示第一个控制点坐标,y2,x2表示第二个控制点坐标,y3,x3表示第三个控制点坐标,weight表示中间控制点的权重,用于控制曲线的弯曲度。

下面是使用draw.bezier_curve()函数绘制贝塞尔曲线的代码和效果图:

from skimage import draw, data
import matplotlib.pyplot as plt
img = data.chelsea()
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包中,画空心圆和空心椭圆的函数和参数和前面的画实心圆和椭圆相同。画空心圆的函数为skimage.draw.circle_perimeter(yx,yc,radius),画空心椭圆的函数为skimage.draw.ellipse_perimeter(cy,cx,yradius,xradius)。

下面是使用draw.circle_perimeter()和draw.ellipse_perimeter()函数画空心圆和椭圆的代码和效果图:

from skimage import draw, data
import matplotlib.pyplot as plt
img = data.chelsea()
rr,cc=draw.circle_perimeter(150,150,50) #绘制圆形的边界线
draw.set_color(img,[rr,cc],[255,0,0])
rr,cc=draw.ellipse_perimeter(150,150,30,80) #绘制椭圆形的边界线
draw.set_color(img,[rr,cc],[0,255,0])
plt.imshow(img,plt.cm.gray)
绘制空心圆和椭圆效果图

综上所述,这篇文章就是要给大家介绍Python数字图像处理中的图形绘制操作。以上各种图形的绘制都可以在skimage包的draw模块找到对应的函数,并且均有明确的函数格式和参数。希望这篇文章能够帮助大家更好地理解Python数字图像处理中的图形绘制操作。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6816.html