加载图像,调用处理函数,最后使用 Matplotlib 显示三个子图:原始图像、去除颅骨后的图像和 K-means 分割后的图像。
时间: 2024-11-27 21:08:32 浏览: 3
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
在Python中,你可以使用`matplotlib`库创建子图来显示原始图像、去除了颅骨后的图像以及K-means分割后的图像。这里需要一个假设的函数来处理图像,例如之前提到的`skullRemover`和`preprocess_img_for_kmeans`函数。以下是如何实现的步骤:
```python
import matplotlib.pyplot as plt
import cv2
import numpy as np
# 假设我们已经有了一个名为img_in的图像
# 加载图像
img_in = cv2.imread('your_image_path', 0) # 读取为灰度图像
# 预处理并获取K-means特征
features = preprocess_img_for_kmeans(img_in)
n_clusters = 2 # 假设为2类,可以根据实际情况调整
kmeans_labels = kmeans_clusters(features, n_clusters)
# 调用skullRemover函数
processed_img = skullRemover(img_in, kmeans_labels)
# 创建一个包含三幅子图的figure
fig, axs = plt.subplots(1, 3, figsize=(12, 4))
# 展示原始图像
axs[0].imshow(img_in, cmap='gray')
axs[0].set_title('Original Image')
# 展示去除颅骨后的图像
axs[1].imshow(processed_img, cmap='gray')
axs[1].set_title('Image after Skull Removal')
# 展示K-means分割后的图像,这里可能需要根据kmeans_labels调整图像展示
# 假设这里简单地按类别着色
unique_labels = np.unique(kmeans_labels)
for label in unique_labels:
mask = kmeans_labels == label
axs[2].imshow(mask.astype(int), cmap='viridis', alpha=0.5)
axs[2].contour(mask.astype(int), colors=['red'], linewidths=2)
axs[2].set_title('K-Means Segmentation')
# 显示所有子图
plt.show()
```
阅读全文