在图像中绘制图形
绘制线条
格式rr,cc = draw.line()
from skimage import draw,data,io
import matplotlib.pyplot as plt
img=io.imread('c.jpg')
rr,cc = draw.line(6,150,660,450)
draw.set_color(img,[rr,cc],[0,0,225]) #绘制颜色
plt.imshow(img,plt.cm.gray)
显示效果:
绘制面性圆
格式:rr, cc = draw.disk((), , shape=img.shape)
from skimage import io, draw
import matplotlib.pyplot as plt
import numpy as np
读取图像
img = io.imread('c.jpg')
获取圆的坐标
rr, cc = draw.disk((150, 150), 120, shape=img.shape)
设置圆区域的颜色为蓝色
img[rr, cc] = [0, 0, 255]
显示图像
plt.imshow(img)
plt.show()
显示效果:
绘制矩形
导入skimage
库中的draw
、data
和io
模块,导入matplotlib.pyplot
,
导入numpy
库,通常简称为np
,用于数组计算
from skimage import draw,data,io
import matplotlib.pyplot as plt
import numpy as np
读取图片
img=io.imread('c.jpg')
定义矩形在图像上的x、y轴
y=np.array([10,10,60,60])
x=np.array([200,400,400,200])
使用draw.polygon
函数根据y和x坐标生成矩形的行和列索引
rr,cc = draw.polygon(y,x)
draw.set_color
函数将多边形覆盖的像素的颜色设置为红色。
draw.set_color(img,[rr,cc],[225,0,0])
plt.imshow(img,plt.cm.gray)
显示效果:
绘制六边形
导入skimage
库中的draw
、data
和io
模块,导入matplotlib.pyplot
,
导入numpy
库,通常简称为np
,用于数组计算
from skimage import draw,data,io
import matplotlib.pyplot as plt
import numpy as np
读取图片
img=io.imread('c.jpg')
定义六边形在图像上的x、y轴
y=np.array([400, 200,200,400, 600,600])
x=np.array([100, 250, 450,600, 450,250])
使用draw.polygon
函数根据y和x坐标生成六边形的行和列索引
rr,cc = draw.polygon(y,x)
draw.set_color
函数将多边形覆盖的像素的颜色设置为红色。
draw.set_color(img,[rr,cc],[225,0,0])
plt.imshow(img,plt.cm.gray)
效果显示:
绘制椭圆
格式:rr,cc = draw.ellipse()
from skimage import draw,data,io
import matplotlib.pyplot as plt
读取图像
img=io.imread('c.jpg')
rr,cc = draw.ellipse(150,150,140,80)
draw.set_color
函数将多边形覆盖的像素的颜色设置为蓝色。
draw.set_color(img,[rr,cc],[0,0,225])
plt.imshow(img,plt.cm.gray)
效果显示:
绘制线条圆
from skimage import draw,data,io
import matplotlib.pyplot as plt
读取图像
img=io.imread('c.jpg')
使用draw.circle_perimeter
函数生成一个圆形边框的行和列索引。这个圆形边框的中心坐标是(450, 550)
,半径是100
像素。
rr,cc = draw.circle_perimeter(450,550,100)
使用draw.set_color
函数将圆形边框的颜色设置为红色。这里的颜色是用RGB值 [225, 0, 0]
表示的,其中225表示红色通道的最大强度,0表示绿色和蓝色通道的最小强度。
draw.set_color(img,[rr,cc],[225,0,0])
显示图像
plt.imshow(img,plt.cm.gray)
效果显示:
图像的平移与镜像
图像的平移
from skimage import io, transform
import matplotlib.pyplot as plt
img = io.imread("c.jpg")
绘制子图片
plt.subplot(1,2,1)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')
使用 transform.warp 函数进行平移
translation = (400, 200)
img1 = transform.warp(img,transform.AffineTransform(translation=translation))
plt.subplot(1,2,2)
plt.title('Translate')
plt.imshow(img1, plt.cm.gray)
plt.axis('off')
plt.show()
显示效果:
图像的镜像
镜像
import numpy as np
from skimage import io, color
import matplotlib.pyplot as plt
读取图像
img = io.imread("c.jpg",plt.cm.gray)
水平镜像
h = np.fliplr(img)
垂直镜像
w = np.flipud(img)
显示原始图像和镜像图像
plt.figure(figsize=(10, 5))
绘制子图片
plt.subplot(1, 3, 1)
plt.title('Original Image')
plt.imshow(img,plt.cm.gray)
plt.axis('off')
plt.subplot(1, 3, 2)
plt.title('Horizontal Mirror')
plt.imshow(h,plt.cm.gray)
plt.axis('off')
plt.subplot(1, 3, 3)
plt.title('Vertical Mirror')
plt.imshow(w,plt.cm.gray)
plt.axis('off')
显示图像
plt.show()
显示效果: