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

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

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

cv2.grabCut(img: Mat, mask: typing.Optional[Mat], 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()
相关推荐
2401_874732531 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
FreakStudio1 小时前
0 元学嵌入式 GUI!保姆级 LVGL+MicroPython 教程开更,从理论到实战全搞定
python·单片机·嵌入式·面向对象·电子diy
蟑螂恶霸1 小时前
Windows安装OpenCV 4.8
人工智能·windows·opencv
剑穗挂着新流苏3123 小时前
117_PyTorch 实战:利用训练好的模型进行单张图片验证
人工智能·python·深度学习
Lethehong4 小时前
Python Selenium全栈指南:从自动化入门到企业级实战
python·selenium·测试工具·自动化
foundbug9994 小时前
基于卡尔曼滤波的背景建模与车辆检测(OpenCV实现)
人工智能·opencv·计算机视觉
智算菩萨4 小时前
MP3音频编码原理深度解析与Python全参数调优实战:从心理声学模型到LAME编码器精细控制
android·python·音视频
qq_452396235 小时前
【模型手术室】第四篇:全流程实战 —— 使用 LLaMA-Factory 开启你的第一个微调任务
人工智能·python·ai·llama
无心水5 小时前
Java时间处理封神篇:java.time全解析
java·开发语言·python·架构·localdate·java.time·java时间处理
吴秋霖6 小时前
【某音电商】protobuf聊天协议逆向
python·算法·protobuf