目录
常用操作:
mayavi工具下,
matplotlib工具下,
实例:图像可视化
实例:普通数据可视化
# 库
import numpy as np
from mayavi import mlab
# 基本函数
mlab.figure # 前景背景设置
mlab.surf # 表面渲染
mlab.mesh # 表面网格
mlab.contour_surf # 表面等高线
mlab.axes # 坐标设置(标签等)
mlab.outline # 网线可视化设置
mlab.show # 显示
# 库
import matplotlib.pyplot as plt
# 建立框图
fig = plt.figure()
# 实例化对象
ax = fig.add_subplot()
ax = fig.gca()
# 成员函数操作
ax.plot() # 点
ax.contour() # 轮廓线
ax.plot_surface() # 表面
ax.set_xlabel() # 标签
ax.set_xlim() # 轴坐标
plt.show() # 显示
建议使用mayai比较好看,数据格式shape 三维保证: X(w,1)Y(1,h)Z(w,h)
'''
# function 输入灰度图,3D可视化
import cv2
import numpy as np
from mayavi import mlab
'''
def image_surf_3D():
# 数据输入
img = cv2.imread("raccoon-3.bmp") # 修改图片位置
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgd = np.array(img) # image类 转 numpy
# 准备数据
sp = imgd.shape
h = int(sp[0]) # height(rows) of image
w = int(sp[1]) # width(colums) of image
x, y = np.ogrid[0:w:1,0:h:1] # 将坐标向量变为坐标矩阵,列为x的长度,行为y的长度
z = imgd
mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1)) #更改背景色
pl = mlab.surf(x, y, z, representation="wireframe", line_width=1.0)
mlab.contour_surf(x, y, z) # 等高线
# mlab.axes(xlabel='x',ylabel='y',zlabel='z') # 显示 x,y,z 的label和数值
# mlab.outline(pl) # 画立体空间包围区域线
mlab.show()
import numpy as np
from mayavi import mlab
def example():
x,y = np.ogrid[-2:2:160j,-2:2:160j]
# arange 函数产生的是一维数组,而ogrid函数产生的是二维数组
z = abs(x)*np.exp(-x**2-(y/.75)**2)
print(x.shape,y.shape)
print(z.shape)
mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1)) #更改背景色
pl=mlab.surf(x,y,z,warp_scale=2)
mlab.axes(xlabel='x',ylabel='y',zlabel='z')
#mlab.outline(pl)
mlab.show()
matplotlib数据格式shape 三维保证: X(w,h)Y(w,h)Z(w,h)
import matplotlib.pyplot as plt
from matplotlib import cm
def contour_surface():
# 第一步:构建框图
fig = plt.figure()
ax = fig.gca(projection='3d')
# 第二步:构建输入数据
X, Y, Z = axes3d.get_test_data(0.05)
# 第三步:绘制表面图
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
# 第四步:对应轴绘制等高线 offset=-100很重要
'''
contour 和 contourf 函数说明:contour画线、contourf画线面
'''
cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
# 第五步:设置表格的各轴范围和标签
ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)
# 第六步:文本注释
ax.text(-40, 20, 50, "SSSSSSSSSSSSSSS", color='red')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
def data_xyz():
# 目标直径
w0 = np.random.randint(low=40, high=100, size=10, dtype='l')
h0 = np.random.randint(low=40, high=100, size=10, dtype='l')
# 大目标直径
W0 = np.random.randint(low = 1200, high = 1280,size = 10,dtype='l')
H0 = np.random.randint(low = 900, high = 1024, size = 10, dtype='l')
# 对象
fig = plt.figure()
ax = fig.add_subplot(111)#, projection='3d'
# 绘制
ax.plot(w0, h0, 'bo')
ax.plot(W0, H0, 'bo')
# 文本
ax.text(30, 100, "S", color='red')
# 轴
ax.set_ylabel('y')
ax.set_xlim(0, 1280)
ax.set_xlabel('x')
ax.set_ylim(0, 1280)
plt.show()