Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

cv2.grabCut(img: Mat, mask: typing.OptionalMat, rect, bgdModel, fgdModel, iterCount, mode=...)

  • 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,也可以联合使用。这是用来确定我们进行修改的方式,矩形模式或者掩模模式。
python 复制代码
import numpy as np
import cv2
from matplotlib import pyplot as plt

img = img = cv2.imread('./resource/opencv/image/messi5.jpg', cv2.IMREAD_COLOR)
mask = np.zeros(img.shape[:2], np.uint8)

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

rect = (50, 50, 450, 450)

# 函数返回值是更新的 mask, bgdModel, fgdModel
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)

mask2 = np.where((mask==2) | (mask==0), 0, 1).astype('uint8')
img = img*mask2[:, :, np.newaxis]

plt.imshow(img), plt.colorbar(), plt.show()
相关推荐
belldeep2 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
benchmark_cc3 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
维克兜率天4 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python
取名真是5 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
梦想不只是梦与想5 小时前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合5 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
别问!问就是全会6 小时前
Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌
ide·python·其他·jupyter
深蓝AI7 小时前
Python 缓存击穿实测:16 个并发请求如何只回源 1 次
python
benchmark_cc7 小时前
用 00700.HK 做港股行情清洗:字段核对、校验与个人量化开发实践
python·数据分析·pandas·量化交易·股票数据·quantdash
zh路西法8 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace