这是我第一次尝试这个套餐..
我尝试使用更简单的图像,我或多或少得到了正确的结果:
from skimage import io, segmentation as seg
import matplotlib as plt
import numpy as np
color_image = io.imread('smallimg.jpg')
labels = seg.slic(color_image, n_segments=4, compactness=4)
for section in np.unique(labels):
rows, cols = np.where(labels == section)
print("Image="+str(section))
print("Top-Left pixel = {},{}".format(min(rows), min(cols)))
print("Bottom-Right pixel = {},{}".format(max(rows), max(cols)))
print("---")
输出:
Image=0
Top-Left pixel = 3,1
Bottom-Right pixel = 15,18
---
Image=1
Top-Left pixel = 26,1
Bottom-Right pixel = 34,18
---
Image=2
Top-Left pixel = 43,1
Bottom-Right pixel = 52,16
---
Image=3
Top-Left pixel = 0,0
Bottom-Right pixel = 59,19
---
请注意,由于渐变,最右边的像素并不是我的意思.最后一段是白色背景.
我试过你的图像,但我认为你必须正确分割.如果你想获得6张图片背景,我会使用n_segments = 7.
我还在文档中看到了紧凑性:“这个参数很大程度上取决于图像对比度和图像中对象的形状.”所以你想要的东西可能很难实现.
如果您正在上面显示的图像上绘制六张图片,为什么不在绘制图片时获得这些坐标而不是将分割应用于最终结果?