十一、skimage基本图形的绘制

图形包括线条、圆形、椭圆形、多边形等。

在skimage包中,绘制图形用的是draw模块,不要和绘制图像搞混了。

1、画线条

函数调用格式为:

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

r1,r2: 开始点的行数和结束点的行数

c1,c2: 开始点的列数和结束点的列数

返回当前绘制图形上所有点的坐标,如:

rr, cc =draw.line(1, 5, 8, 2)

表示从(1,5)到(8,2)连一条线,返回线上所有的像素点坐标[rr,cc]

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)

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

skimage.draw.set_color(imgcoordscolor)

例:

draw.set_color(img,[rr,cc],[255,0,0])

则绘制红色线条。

from skimage import draw,data
import matplotlib.pyplot as plt
img=data.chelsea()
rr, cc =draw.line(1, 150, 270, 250)
draw.set_color(img,[rr,cc],[0,0,255])
plt.imshow(img,plt.cm.gray)

2、画圆

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

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

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)

3、多边形

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

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

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)

我在此处只设置了四个顶点,因此是个四边形。

4、椭圆

格式:skimage.draw.ellipse(cycxyradiusxradius)

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

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)

5、贝塞儿曲线

格式: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.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)

6、画空心圆

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

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

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

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])
plt.imshow(img,plt.cm.gray)

7、空心椭圆

格式:skimage.draw.ellipse_perimeter(cycxyradiusxradius)

cy,cx表示圆心

yradius,xradius表示长短轴

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

 

### 使用Python进行独特艺术风格绘图的方法和库 #### 方法概述 为了创建独特的艺术风格,可以利用多种方法和技术来增强图像处理的效果。这包括但不限于应用滤镜、调整色彩平衡以及添加手绘纹理等特效[^1]。 #### 库的选择 对于希望尝试不同寻常绘画方式的人来说,有几个非常有用的Python库可以帮助实现这一目标: - **PIL/Pillow**: 这是一个广泛使用的图像处理库,支持大量的文件格式,并提供了丰富的操作函数用于修改图片属性,如尺寸变换、旋转翻转等功能;除此之外还能轻松加载并保存各类位图文件。 - **OpenCV-Python (cv2)**: 主要应用于计算机视觉领域,但同样适用于创意性的图形编辑工作。该模块内置了许多先进的算法,可用于特征检测、边缘提取等方面的工作,从而为艺术家们提供更多的创作灵感来源。 - **skimage (scikit-image)**: 它建立在SciPy之上,专注于科学计算方面的需求。此包内含有一系列专门针对二维数据集设计的功能,比如形态学运算符、分割工具等等,非常适合用来构建自定义的艺术效果处理器。 - **Turtle Graphics**: 提供了一个简单易懂的教学平台让初学者快速上手编程的同时也能享受到创造的乐趣。通过控制虚拟海龟移动轨迹的方式绘制图案,既有趣又充满挑战性[^3]。 - **Generative Art Libraries like generativepy or vpython**: 可以帮助开发者更方便地生成基于规则系统的抽象艺术品。这类程序通常会涉及到概率论、分形几何等相关知识点的学习与实践,最终产出的作品往往具有很高的美学价值。 ```python from PIL import Image, ImageFilter import numpy as np import cv2 from skimage import data, img_as_float, exposure def apply_sketch_effect(image_path): # Load an image from file into a NumPy array. original_image = cv2.imread(image_path) grayed_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY) inverted_gray = 255 - grayed_image blurred_inverted = cv2.GaussianBlur(inverted_gray, ksize=(21, 21), sigmaX=0, sigmaY=0) pencil_sketched = cv2.divide(grayed_image, 255-blurred_inverted, scale=256) return pencil_sketched # Example usage of the function defined above to create sketch effect on any given photo. resultant_img = apply_sketch_effect('path_to_your_photo.jpg') cv2.imshow("Sketch", resultant_img) cv2.waitKey(0) cv2.destroyAllWindows() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值