我想在我的项目中对图像使用图形切割算法,我使用的是python 2.7。
我找到了pymaxflow implementation,但文档似乎不太清楚。我举个例子,这是我的 5*5 矩阵:
>>> A
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
虚拟终端节点S(源)和T(汇)应分别与矩阵最左侧和最右侧列的所有像素用无限权弧连接。这是我想要获得的:
这是我获取此代码的代码,但它不起作用
left_most = concatenate((np.zeros((1, A.shape[0])), np.arange(A.shape[0]).reshape(1, A.shape[0]))).astype(np.uint64)
left_most = np.ravel_multi_index(left_most, A.shape)
right_most = concatenate((np.ones((1, A.shape[0])) * size(A, 1) - 1, np.arange(A.shape[0]).reshape(1, A.shape[0]))).astype(np.uint64)
right_most = np.ravel_multi_index(right_most, A.shape)
g.add_grid_tedges(left_most, np.ones(left_most.shape) * np.inf, np.zeros(left_most.shape))
g.add_grid_tedges(right_most, np.zeros(right_most.shape), np.ones(right_most.shape) * np.inf)
g.maxflow()
使 python 控制台处于无限循环中。我不确定我的实现:制作可用于图形切割算法的正确图形的方法是什么?
谢谢!
Ps 如果您知道另一个库的解决方案,请告诉我,任何建议将不胜感激。