在计算min cut是,右边流向的容量,不计数。
其中,关于理解【min cut = max flow】可以从下面这个一维的情况来简化这个思考。
一维度:最小的水管约束了水管的最大流速(单位时间流过的水量)。
二维:min cut(二维平面上的分割线)约束了二维管道的max flow(最大流速)
总结:1. 没有理想中的效果那么好,对于前景和背景颜色比较明显界限的图(卡通,场景简洁),效果是不错的。对于一些复杂,颜色渐变,细节杂乱的,往往在边界很依赖于前期所描绘的种子位置。
2.速度也比较慢。
code debug
使用一个repo,但是总是报错,花了一些时间去解决。稍微总结一下:
1. OpenCV中文路径的问题。原代码中使用imread,imsave来读取和保存图片,结果电脑路径中有中文,导致保存一直识别。
# self.image = cv2.imread(filename)
self.image = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imencode('.jpg', to_save)[1].tofile(outfilename)
# cv2.imwrite(outfilename, to_save)
2. connect() failed,Qt中的装饰器@pyqtSlot(),可以去掉。这个我也不知道为什么,不太熟悉Qt.
openButton.triggered.connect(self.on_open)
TypeError: connect() failed between triggered(bool) and wrapped()
Process finished with exit code 1
# @pyqtSlot()
def on_segment(self):
self.graph_maker.create_graph()
self.segmentLabel.setPixmap(QPixmap.fromImage(
self.get_qimage(self.graph_maker.get_image_with_overlay(self.graph_maker.segmented))))
# self.on_save()
4. 'import maxflow' ,安装的时候,pip install Pymaxflow.不是直接安装maxflow.
一些相关的博客