map*_*ple 1 python opencv numpy image-processing
H x W
对于仅包含True
和值的形状的给定图像掩模矩阵False
,我希望将所有False
值转换为True
它们完全被值包围时的True
值。
例如
mask = np.array([
[True, True, True, True, True ],
[True, False, True, False, True ],
[True, True, True, False, True ],
[True, False, False, False, True ],
[True, True, True, True, True ]
])
Run Code Online (Sandbox Code Playgroud)
结果应该是
np.array([
[True, True, True, True, True ],
[True, True, True, True, True ],
[True, True, True, True, True ],
[True, True, True, True, True ],
[True, True, True, True, True ]
])
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种有效的方法来实现这一点,也许是通过一个强大的图像处理库,而不是制作一个自定义的 Python 帮助函数。
这是一个使用cv.findContours
.
这会找到白色岛屿,其中有黑色池塘,然后填满岛屿。
在您的示例中,它将返回覆盖整个域的单个轮廓。就我而言,它将找到三个轮廓:顶部的凹形斑点、左侧的小斑点和右侧的大斑点。它不会费心去寻找大圆圈中包含的小圆圈。
tmp = src.astype(np.uint8).copy()
(cnts, _) = cv.findContours(
tmp, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(
image=tmp,
contours=cnts, contourIdx=-1,
color=1, thickness=cv.FILLED)
tmp = tmp.astype(bool)
Run Code Online (Sandbox Code Playgroud)
输入输出:
归档时间: |
|
查看次数: |
99 次 |
最近记录: |