051-OpenCV GrabCut图像分割算法

话不多说,上代码,看结果。

import cv2           # 导入库
import numpy as np

'''  
    cv2.imread(filename,flags)
# filename为文件名,图片与.py文件在一个文件夹时输入文件名即可
# 不在一个文件夹时输入图片的路径和名字
# flags为图片的颜色类型,默认为1,灰度图像为0
'''
img = cv2.imread('89.jpg')

mask = np.zeros(img.shape[:2], np.uint8)

bgdModel = np.zeros((1, 65), np.float64)

fgdModel = np.zeros((1, 65), np.float64)

rect = (160, 160, 376, 498)

'''
    cv2.grabCut(img, mask, rect, bgdModel, fgdModel, iterCount, mode)
# img: 待分割原图像, 需为8位三通道彩色图像
# mask: 8位单通道掩码图像, 如果使用掩码进行初始化, 那么mask保存掩码信息, 
# 在执行分割的时候, 也可以将用户交互所设定的前景与背景保存到mask中,然后再传入grabCut函数, 
# 在处理结束之后,mask中会保存结果。Mask只能取4种可能的值:
# GC_BGD: 0 表示明确属于背景的像素  GC_FGD: 1 表示明确属于前景的像素
# GC_PR_BGD: 2 表示可能属于背景的像素   GC_PR_FGD: 3 表示可能属于前景的像素
# 如果没有手动标记GC_BGD或者GC_FGD, 那么结果只会有GC_PR_BGD或 GC_PR_FGD
# rect: 包含分割对象的矩形ROI, 矩形外部的像素为背景, 矩形内部的像素为前景,当参数mode=GC_INIT_WITH_RECT使用
# bgdModel: 背景模型(内部使用), 大小为 (1,65),数据类型为 np.float64 的数组
# fg

你可能感兴趣的:(051-OpenCV GrabCut图像分割算法)