首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自polygon_perimeter的裁剪图像

来自polygon_perimeter的裁剪图像
EN

Stack Overflow用户
提问于 2020-07-20 06:11:14
回答 1查看 24关注 0票数 0

我正在尝试裁剪图像。我已经在我想要裁剪的零件周围创建了一个多边形。

代码语言:javascript
复制
xs = []
ys = []
for props in measurements:
    minr, minc, maxr, maxc = props.bbox
    by = (minc , maxc, maxc, minc, minc)
    bx = (minr, minr, maxr, maxr, minr)
    xs.append(bx)
    ys.append(by)
    
    
r = xs[0] 
c = ys[0] 


rr,cc = draw.polygon_perimeter(r ,c)
img_blob[rr,cc] = 1
cool = img_blob[rr,cc]

[rows, columns] = np.where(cool)
row1 = min(rows)
row2 = max(rows)
col1 = min(columns)
col2 = max(columns)


cropped = img_blob[row1 : row2, col1:col2]
plt.imshow(cropped)

使用上面的代码,我将获得

代码语言:javascript
复制
ValueError to be 'not enough values to unpack (expected 2, got 1)'

如何才能仅获取polygon_perimeter所在的位置,以便根据该位置进行裁剪?

我不能使用cv2PIL,只能使用skimagenumpy

EN

回答 1

Stack Overflow用户

发布于 2020-07-20 11:04:22

cool是一个只包含1的一维数组,因为您可以使用cool = img_blob[rr, cc]img_blog中提取它们。使用坐标列表进行索引称为fancy indexing,它总是得到一个与索引形状相同的数组,在本例中是1D。

所以,当你执行np.where(cool)时,你会得到一个长度为1,坐标为1d的元组,但是表达式rows, cols = np.where(cool)需要两个值,所以它会报错。(在完整的回溯中,查看引发ValueError的行总是很好的。)

取而代之的是,使用rows, columns = np.where(img_blob),一切都会正常工作的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62986238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档