OpenCV泛洪填充多个种子
OpenCV FloodFill with multiple seeds
python/openCV是否有一个floodFill函数,它会获取种子列表并开始更改其邻居的颜色?我知道simplecv是一个类似simplecv floodFill的函数。OpenCV说,当它使用掩码时,它有两个floodFill函数,另一个不使用掩码,文档中,如果没有掩码和种子列表,我将无法使用OpenCV floodFill函数。有什么帮助吗?
到目前为止,我正努力做到这一点:
A=array([[0,1,1,0],[0,0,0,0],[1,1,1,1],[1,1,1,1]],np.uint8)
mask = np.ones((A.shape[0]+2,A.shape[0]+2),np.uint8)
mask[1:-1,1:-1] = np.zeros((A.shape))
cv.floodFill(A, mask, (3,0), 0,0,0, flags=4|cv.FLOODFILL_MASK_ONLY)
print mask
返回的掩码:
[[1 1 1 1 1 1]
[1 1 0 0 1 1]
[1 1 1 1 1 1]
[1 0 0 0 0 1]
[1 0 0 0 0 1]
[1 1 1 1 1 1]]
预期掩码:
[[1 1 1 1 1 1]
[1 0 0 0 0 1]
[1 0 0 0 0 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]]
原始图像:
[[0 1 1 0]
[0 0 0 0]
[1 1 1 1]
[1 1 1 1]]
如果仔细查看文档,这就是mask的用途之一。您可以多次调用函数(第二个版本),每次都使用不同的种子,并且在末尾掩码将包含已填充的区域。如果一个新种子属于一个已经被淹没的区域,那么函数调用将立即返回。
使用FLOODFILL_MASK_ONLY标志,然后使用此掩码在输入图像的末尾用setTo()绘制具有指定填充颜色的图像(您必须使用掩码的子图像!删除第一行和最后一列)。请注意,如果将loDiff
或upDiff
设置为不同于默认值零的值,则根据处理种子点的顺序,floodfill可能会产生不同的结果。
看看这个。
相关文章:
- 在c++中用vector填充一个简单的动态数组
- 如何使用用户输入在C++中正确填充2D数组
- 如何找到大小'x'数组是否完全填充,在C++?
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 通过for循环使用用户输入填充列表
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何正确填充在堆上分配的二维数组?
- 将数字转换为填充字符串
- 有没有办法在一行中填充矢量图
- 用C++中的数字和条件填充向量
- 用真值填充矢量
- 使用结构成员指针在C++中填充结构
- 流填充字符的默认定位
- 使用不同算法的 PKCS1v15 填充进行加密 ++ 签名
- C++:使用缓冲区中的数据填充结构
- 如何将零填充的多维数组传递给 C++ 中的函数?
- Cryptopp:获取密码输入的填充字符串
- 填充上编译器生成的复制构造函数之间的不一致
- 如何使用要传递给 mt19937 的可选随机种子参数设计函数
- OpenCV泛洪填充多个种子