python - 切片超像素的平均颜色
问题描述
我想使用切片超像素分割图像,然后用所述超像素的平均颜色替换超像素的原始颜色。
import numpy as np
import matplotlib.pyplot as plt
from skimage import io
from skimage.segmentation import slic, mark_boundaries
from skimage.data import astronaut
from skimage.measure import regionprops
img = astronaut()
segments = slic(img, n_segments=512, compactness=10,
multichannel=True,
enforce_connectivity=True,
convert2lab=True)
regions = regionprops(segments, intensity_image=img)
我得到错误ValueError: Label and intensity image must have thesame shape.
Segments shape is (512,512) 和 img shape in (512,512,3)。regionprops
在我的情况下正确使用什么?
解决方案
我遵循了已接受答案的第一个建议。我的代码的工作版本:
import matplotlib.pyplot as plt
from skimage.segmentation import slic
from skimage.data import astronaut
from skimage.measure import regionprops
def paint_region_with_avg_intensity(rp, mi, channel):
for i in range(rp.shape[0]):
img[rp[i][0]][rp[i][1]][channel] = mi
img = astronaut()
segments = slic(img, n_segments=512, compactness=10,
multichannel=True,
enforce_connectivity=True,
convert2lab=True)
for i in range(3):
regions = regionprops(segments, intensity_image=img[:,:,i])
for r in regions:
paint_region_with_avg_intensity(r.coords, int(r.mean_intensity), i)
plt.imshow(img)
plt.show()
推荐阅读
- python - 需要帮助识别'data [x,y]'访问的python数据结构
- javascript - 如何减少 amap Array.prototype.some() 调用?
- perl - 如何在不要求用户插入信息的情况下向用户请求权限访问 Google 注册
- android-studio - 模拟器没有出现
- javascript - 如何从角度或javascript中的数组中获取匹配的字符串元素
- jenkins - 使用 aws 的 Jenkins 未被识别为内部或外部命令 - Windows 10
- javascript - ChartJS 在可见性属性切换后显示错误的数据集
- python - 删除多个列表元素,知道它们在 python 中的索引
- php - PHP 中的 openssl_seal 生成“503 Service Unavailable”页面
- python - pyspark 中的 to_json 排除空值,但我需要空值作为空白