我正在使用scikit-image
来检测图像上的某些区域。我能够使用blob_doh
函数检测斑点。此外,我能够使用Canny edge detector
和标签找到区域。Python:如何使用`numpy.all`和`numpy.any`检查数组是否包含在另一个数组中?
现在我想检查一下我之前找到的斑点是否位于这些区域内部,并对那些不在任何区域中的斑点进行分类。然后,我只想绘制区域内的斑点。
我试图实现这个使用numpy.all
和numpy.any
但我可能误解了这些函数的工作方式。这是我有:
for region in regions:
# list of pixels' coords in a region
pixel_array = region.coords
# check if a blob is inside the region
for blob in blobs_doh:
y, x, r = blob
if np.any(pixel_array == [x, y]):
c = plt.Circle((x, y), r, color='red', linewidth=1, fill=False)
minr, minc, maxr, maxc = region.bbox
rect = mpatches.Rectangle((minc, minr), maxc - minc, maxr - minr, fill=False, edgecolor='lime', linewidth=1)
# draw blobs and regtangles
ax.add_patch(c)
ax.add_patch(rect)
break
所以,我做了什么。 region
是形状为[[a1, b1], [a2, b2], [a3, b3], ..., [an, bn]]
的阵列,并且blob
是形状为[c, d]
的阵列。我的想法是检查region
中是否有任何等于blob
的子阵列。我当然可以通过循环搜索来做到这一点,但我认为这样做更有效,并试图使用numpy.all
和numpy.any
。不幸的是,我无法正常工作。行np.any(pixel_array == [x, y])
仅检查blob
的第一个元素,但不检查整个子阵列[x, y]
。我也试过的.any
和.all
不同组合使用axis
说法:
np.any(pixel_array == [x, y], axis = 1).all(axis = 0)
,但不能得到任何满意的结果。
请帮我完成此任务。执行这种检查的更好方法是什么?
谢谢。
看一看http://stackoverflow.com/a/15068334/2375207 – nicolallias