OpenCV - GrabCut 算法抠图(Python实现)

本文介绍了OpenCV中的GrabCut算法,通过用户初步框选前景区域,实现迭代式分割以精确抠图。详细阐述了算法原理,并提供了相关函数和程序示例。
摘要由CSDN通过智能技术生成

原理

开始时用户需要用一个矩形将前景区域框住(前景区域应该完全被包括在矩形框内部)。然后算法进行迭代式分割直达达到最好结果。

函数

mask, bgdModel, fgdModel = cv2.grabCut(img, mask, rect, bgdModel, fgdModel, iterCount, mode=None)
参数
img 输入图像
mask 掩模图像,用来确定那些区域是背景,前景,可能是前景/背景等
可以设置为: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接输入 0,1,2,3 也行。
rect 包含前景的矩形,格式为 (x,y,w,h)
bdgModel, fgdModel 算法内部使用的数组. 你只需要创建两个大小为 (1,65),数据类型为 np.float64 的数组。
iterCount 算法的迭代次数
mode 可以设置为 cv2.GC_INIT_WITH_RECT 或 cv2.GC_INIT_WITH_MASK,也可以联合使用。这是用来确定我们进行修改的方式,矩形模式或者掩模模式。

程序

import numpy as np
import cv2

#定义全局变量
n = 0    #定义鼠标按下的次数
ix &
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值