python - 切片超像素的平均颜色

标签 python image-processing scikit-image superpixels

我想使用切片超像素分割图像,然后用所述超像素的平均颜色替换超像素的原始颜色。

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:标签和强度图像必须具有相同的形状。 分段形状为 (512,512),img 形状为 (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()

enter image description here

关于python - 切片超像素的平均颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155771/

相关文章:

python - 检测图像中的漫画对话气泡区域

python - Scrapy - 如何检查蜘蛛是否正在运行

python - PySpark 和方法链

python-3.x - PIL 改变颜色 channel 强度

scikit-image - hough_line_peaks() 中的 min_distance 和 min_angle 是什么意思?

python - skimage.measure.regionprops 标签对应的测量值?

python - 为什么我的 networkx 图不显示节点之间的边?

python - Jupyter 使用了错误版本的 python

image-processing - 需要一个自动图像标记 API,有什么建议吗?

opencv - OpenCV-如何将不同的轮廓统一到一个封闭的轮廓