Mahotas 教程

Mahotas - 主页 Mahotas - 简介 Mahotas - 计算机视觉 Mahotas - 历史 Mahotas - 功能 Mahotas - 安装

Mahotas 处理图像

Mahotas - 处理图像 Mahotas - 加载图像 Mahotas - 将图像加载为灰色 Mahotas - 显示图像 Mahotas - 显示图像形状 Mahotas - 保存图像 Mahotas - 图像的质心 Mahotas - 图像的卷积 Mahotas - 创建 RGB 图像 Mahotas - 图像的欧拉数 Mahotas - 图像中的零分数 Mahotas - 获取图像矩 Mahotas - 图像中的局部最大值 Mahotas - 图像椭圆轴 Mahotas - 图像拉伸 RGB

Mahotas 颜色空间转换

Mahotas - 颜色空间转换 Mahotas - RGB 到灰度转换 Mahotas - RGB 到 LAB 转换 Mahotas - RGB 转棕褐色 Mahotas - RGB 到 XYZ 转换 Mahotas - XYZ 到 LAB 转换 Mahotas - XYZ 到 RGB 转换 Mahotas - 增加伽马校正 Mahotas - 拉伸伽马校正

Mahotas 标记图像函数

Mahotas - 标记图像函数 Mahotas - 标记图像 Mahotas - 过滤区域 Mahotas - 边界像素

Mahotas - 形态学操作

Mahotas - 形态运算符 Mahotas - 查找图像平均值 Mahotas - 裁剪图像 Mahotas - 图像偏心率 Mahotas - 叠加图像 Mahotas - 图像圆度 Mahotas - 调整图像大小 Mahotas - 图像直方图 Mahotas - 扩大图像 Mahotas - 腐蚀图像 Mahotas - 分水岭 Mahotas - 图像的开运算过程 Mahotas - 图像的闭合过程 Mahotas - 填补图像中的空洞 Mahotas - 条件性膨胀图像 Mahotas - 条件腐蚀图像 Mahotas - 图像的条件分水岭 Mahotas - 图像中的局部最小值 Mahotas - 图像的区域最大值 Mahotas - 图像的区域最小值

Mahotas - 高级概念

Mahotas - 图像阈值 Mahotas - 设置阈值 Mahotas - 软阈值 Mahotas - Bernsen 局部阈值 Mahotas - 小波变换 Mahotas - 制作图像小波中心 Mahotas - 距离变换 Mahotas - 多边形实用程序 Mahotas - 局部二元模式 Mahotas - 阈值邻接统计 Mahotas - Haralic 特征 Mahotas - 标记区域的权重 Mahotas - Zernike 特征 Mahotas - Zernike 矩 Mahotas - 等级过滤器 Mahotas - 2D 拉普拉斯过滤器 Mahotas - 多数过滤器 Mahotas - 均值滤波器 Mahotas - 中值滤波器 Mahotas - Otsu 方法 Mahotas - 高斯滤波 Mahotas - 命中与未命中变换 Mahotas - 标记最大值数组 Mahotas - 图像平均值 Mahotas - SURF 密集点 Mahotas - SURF 积分 Mahotas - Haar 变换 Mahotas - 突出显示图像最大值 Mahotas - 计算线性二进制模式 Mahotas - 获取标签边框 Mahotas - 逆 Haar 变换 Mahotas - Riddler-Calvard 方法 Mahotas - 标记区域的大小 Mahotas - 模板匹配 Mahotas - 加速稳健特征 Mahotas - 移除带边框的标签 Mahotas - Daubechies 小波 Mahotas - Sobel 边缘检测



Mahotas - 显示图像的形状

处理图像数据时,有些情况下我们需要显示图像的形状。

显示图像的形状是指揭示图像的尺寸和特征,例如其宽度、高度和颜色通道;其中高度对应于行数,宽度对应于列数,通道表示图像中的颜色通道数(例如,RGB 图像为 3)。

在 Mahotas 中显示图像的形状

在 mahotas 中,我们可以使用代表图像的 NumPy 数组的 shape 属性来显示图像的形状。通过访问此属性,我们可以获得图像的尺寸并根据其形状确定要执行的适当操作。

让我们讨论 Mahotas 提供的用于提取和可视化形状信息的不同步骤和功能,以及实际示例。

步骤 1:导入和加载图像

首先,我们需要导入 Mahotas 库并加载我们要分析的图像。安装 Mahotas 后,我们就可以开始进行图像形状分析了。

步骤 2:显示图像的形状

要在 mahotas 中显示图像的形状,我们可以使用 NumPy 数组的 shape 属性。

shape 属性返回一个表示数组维度的整数元组。对于图像,它将提供有关其宽度、高度和通道的信息。

image_shape = image.shape
print("Image Shape:", image_shape)

这将以 (height, width, channels) 格式打印已加载图像的形状。

步骤 3:提取单个维度

当我们谈到在 Mahotas 中提取形状的单个维度时,我们指的是获取有关图像大小和颜色成分的特定信息。

简单来说,图像具有不同的属性,例如其高度、宽度和颜色通道数(例如红色、绿色和蓝色)。提取单个维度意味着分别隔离和获取这些特定的信息。

height = image_shape[0]
width = image_shape[1]
channels = image_shape[2]
print("Height:", height)
print("Width:", width)
print("Channels:", channels)

通过执行此代码,我们将使用索引访问图像的尺寸,其中,

  • 第一个索引对应于高度,

  • 第二个索引对应于宽度

  • 第三个索引对应于通道数。

这将提供图像的各个尺寸。

步骤 4:检查灰度图像

灰度图像是黑白图像,其中每个像素代表该特定点的强度或亮度。它没有任何颜色信息。把它想象成一张黑白照片。

有时,我们会遇到灰度图像,它只有一个通道,而不是彩色图像通常的三个通道(红色、绿色和蓝色)。要确定图像是否为灰度,我们可以检查通道数是否等于 1。

is_grayscale = channels == 1
if is_grayscale:
   print("The image is grayscale.")
else:
   print("The image is not grayscale.")

通过执行此代码,您将发现加载的图像是否为灰度。根据结果,我们可以进行适当的分析。

步骤 5:在图像上显示形状信息

现在,让我们探索如何在图像本身上显示形状信息。我们可以绘制形状或添加文本叠加以突出显示特定形状特征。这在显示或保存带有注释形状信息的图像时非常有用。

import matplotlib.pyplot as plt
# 创建图形和轴
fig, ax = plt.subplots()
# 显示图像
ax.imshow(image)
# 添加文本以显示形状信息
ax.text(10, 20, f"Shape: {image_shape}", color='white', fontsize=10,
bbox=dict(facecolor='black'))
# 删除轴刻度
ax.set_xticks([])
ax.set_yticks([])
# 显示图形
plt.show()

当我们执行此代码时,它将显示带有形状信息的图像。形状信息将定位在指定的坐标处,文本将以白色显示在黑色边界框上,使其在图像上更加清晰可见。

完整示例

现在,让我们看一下包含上述所有步骤的完整代码 −

# 安装库
import mahotas as ms
import matplotlib.pyplot as mtplt
# 加载图像
image = ms.imread('sun.png')
# 显示图像的形状
image_shape = image.shape
print("Image Shape:", image_shape)
# 提取单个维度
height = image_shape[0]
width = image_shape[1]
channels = image_shape[2]
print("Height:", height)
print("Width:", width)
print("Channels:", channels)
# 检查图像是否为灰度
is_grayscale = channels == 1
if is_grayscale:
   print("The image is grayscale.")
else:
   print("The image is not grayscale.")
# 创建图形和轴
fig, ax = mtplt.subplots()
# 显示图像
ax.imshow(image)
# 添加文本以显示形状信息
ax.text(350, 200, f"Shape: {image_shape}", color='white', fontsize=8,
bbox=dict(facecolor='green'))
# 删除轴刻度
ax.set_xticks([])
ax.set_yticks([])
# 显示图像
ax.imshow(image)
# 添加文本叠加以显示尺寸
text = f"Dimensions: {width}x{height}x{channels}" if not is_grayscale else
f"Dimensions: {width}x{height} (Grayscale)"
ax.text(18, 100, text, color='red', fontsize=12, fontweight='bold')
# 删除轴刻度和标签
ax.axis('off')
#显示带有形状信息的图像
mtplt.show()

输出

执行上述代码后,我们得到以下输出 −

Image Shape: (1280, 843, 3)
Height: 1280
Width: 843
Channels: 3
The image is not grayscale.
Displaying shape image