- 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 到 Sepia 转换
- 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 - Haralic 特征
- 标记区域的权重
- Mahotas - Zernike 特征
- Mahotas - Zernike 矩
- Mahotas - 排序滤波器
- Mahotas - 2D 拉普拉斯滤波器
- Mahotas - 多数滤波器
- Mahotas - 均值滤波器
- Mahotas - 中值滤波器
- Mahotas - Otsu 方法
- Mahotas - 高斯滤波
- Mahotas - 击中击不中变换
- Mahotas - 标记最大值数组
- Mahotas - 图像的平均值
- Mahotas - SURF 密集点
- Mahotas - SURF 积分
- Mahotas - Haar 变换
- 突出显示图像最大值
- 计算线性二值模式
- 获取标签的边界
- 反转 Haar 变换
- Riddler-Calvard 方法
- 标记区域的大小
- Mahotas - 模板匹配
- 加速鲁棒特征
- 移除边界标记
- Mahotas - Daubechies 小波
- Mahotas - Sobel 边缘检测
Mahotas - 裁剪图像
裁剪图像指的是从图像中选择和提取特定的感兴趣区域,并丢弃其余部分。它允许我们专注于图像中特定区域或对象,同时移除不相关或不需要的部分。
一般来说,要裁剪图像,您需要定义要保留区域的坐标或尺寸。
在 Mahotas 中裁剪图像
要使用 Mahotas 裁剪图像,我们可以使用 NumPy 数组切片操作来选择图像的所需区域。我们需要定义所需 ROI 的坐标或尺寸。这可以通过指定要裁剪区域的起点、宽度和高度来完成。
通过提取和隔离 ROI,我们可以仅分析、操作或显示图像的相关部分。
示例
在以下示例中,我们将图像裁剪到所需的大小 -
import mahotas as mh import numpy as np import matplotlib.pyplot as plt image = mh.imread('sun.png') cropping= image[50:1250,40:340] # Create a figure with subplots fig, axes = plt.subplots(1, 2, figsize=(10, 5)) # Display the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].axis('off') # Display the cropped image axes[1].imshow(cropping, cmap='gray') axes[1].set_title('Cropped Image') axes[1].axis('off') # Adjust the layout and display the plot plt.tight_layout() plt.show()
输出
以下是上述代码的输出 -
裁剪正方形区域
要在 mahotas 中裁剪正方形区域,我们需要确定起始和结束行以及列。以下是如何计算这些值的方法 -
步骤 1 - 找到图像的最小尺寸。
步骤 2 - 通过从总行数中减去最小尺寸并将结果除以 2 来计算起始行。
步骤 3 - 通过将起始行添加到最小尺寸来计算结束行。
步骤 4 - 使用类似的方法计算起始列。
步骤 5 - 通过将起始列添加到最小尺寸来计算结束列。
使用计算出的起始和结束行以及列,我们可以从图像中裁剪正方形区域。我们通过使用适当的行和列范围对图像数组进行索引来实现这一点。
示例
在这里,我们尝试在正方形区域中裁剪图像 -
import mahotas as mh import numpy as np import matplotlib.pyplot as plt image = mh.imread('tree.tiff') # Get the minimum dimension size = min(image.shape[:2]) # Calculating the center of the image center = tuple(map(lambda x: x // 2, image.shape[:2])) # Cropping a square region around the center crop = image[center[0] - size // 2:center[0] + size // 2, center[1] - size // 2:center[1] + size // 2] # Create a figure with subplots fig, axes = plt.subplots(1, 2, figsize=(10, 5)) # Display the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].axis('off') # Display the cropped image axes[1].imshow(crop, cmap='gray') axes[1].set_title('Cropped Image') axes[1].axis('off') # Adjust the layout and display the plot plt.tight_layout() plt.show()
输出
执行上述代码后,我们将获得以下输出 -
裁剪圆形区域
要在 mahotas 中将图像裁剪为圆形区域,我们需要确定圆心的坐标和半径。
我们可以通过将中心计算为图像尺寸的中点并将半径设置为最小尺寸的一半来实现。
接下来,我们创建一个与图像尺寸相同的布尔掩码,其中 True 值表示圆形区域内的像素。
我们通过计算每个像素到中心的距离并在指定半径内设置 True 来实现。
现在我们有了圆形掩码,我们可以通过将圆形区域外的值设置为零将其应用于图像。最后,我们得到裁剪后的图像。
示例
现在,我们尝试在圆形区域中裁剪图像 -
import mahotas as mh import numpy as np import matplotlib.pyplot as plt image = mh.imread('sun.png') # Calculating the center of the image center = tuple(map(lambda x: x // 2, image.shape[:2])) # Calculating the radius as half the minimum dimension radius = min(image.shape[:2]) // 2 # Creating a boolean mask of zeros mask = np.zeros(image.shape[:2], dtype=bool) # Creating meshgrid indices y, x = np.ogrid[:image.shape[0], :image.shape[1]] # Setting mask values within the circular region to True mask[(x - center[0])**2 + (y - center[1])**2 <= radius**2] = True crop = image.copy() # Setting values outside the circular region to zero crop[~mask] = 0 # Create a figure with subplots fig, axes = plt.subplots(1, 2, figsize=(7, 5)) # Display the original image axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].axis('off') # Display the cropped image axes[1].imshow(crop, cmap='gray') axes[1].set_title('Cropped Image') axes[1].axis('off') # Adjust the layout and display the plot plt.tight_layout() plt.show()
输出
获得的输出如下所示 -