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

news/2024/12/31 1:31:17/

OpenCV-Python中的图像处理-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,也可以联合使用。这是用来确定我们进行修改的方式,矩形模式或者掩模模式。
import numpy as np
import cv2
from matplotlib import pyplot as pltimg = 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()

在这里插入图片描述


http://www.ppmy.cn/news/1042015.html

相关文章

2023全国大学生数学建模ABC题思路模型代码

目录 1.思路(待更新,比赛开始第一时间持续更新) ABCDE题思路持续更新,9.7晚赛题发布之后开始持续更新,详细更新见文末名片 2.思路在比赛开始后会进行持续更新,关于常用的模型算法也已经整理在里面&#x…

每日一题——连续子数组的最大和

题目 输入一个长度为n的整型数组array&#xff0c;数组中的一个或连续多个整数组成一个子数组&#xff0c;子数组最小长度为1。求所有子数组的和的最大值。 数据范围:1<n<2105 −100<a[i]<100 要求:时间复杂度为 O(n)&#xff0c;空间复杂度为 O(n) 示例1 输入…

如何在HTML中使用React

突发奇想 查了查真的可以,官方文档: 在网站中添加 React – React 开始 引入js <!-- 开发环境使用 --><script src"https://unpkg.com/react18/umd/react.development.js"></script><script src"https://unpkg.com/react-dom18/umd/reac…

openEuler上安装19c单机的问题集

1、欧拉的版本 仅在openEuler release 20.03版本上安装成功 2、oracle用户crontab没权限 orcl:/home/oracledb> crontab -l You (oracle) are not allowed to use this program (crontab) See crontab(1) for more information 处理办法&#xff1a;# echo oracle >&…

Richtek(立锜)车载PD快充产品常见问题解答—兼具 USB PD 和 UFCS 快充电源完整解决方案

1 我的Switch游戏机能不能用最新的PD协议&#xff1f; 可以的&#xff0c;PD最新协议都兼容旧协议 2 PD协议向下兼容吗&#xff1f; 是的&#xff0c;PD3.1也是向下兼容的 3 UFCS协议目前用什么仪器测试&#xff1f; 谢谢。 目前RICHTEK有协议测试工具&#xff0c;中国UFCS协…

一些面向H5画布Canvas的js库

1. Three.js&#xff08;三维库&#xff09; 一个强大的JavaScript 3D库&#xff0c;可以创建复杂的三维场景和动画。中文名称为“三维库”。 <script src"https://cdn.bootcdn.net/ajax/libs/three.js/0.151.3/three.min.js"></script>2. Babylon.js&…

C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象

第十章 类与对象 在面向对象编程中&#xff0c;类和对象是两个重要的概念。 类&#xff08;Class&#xff09;是一种用户自定义的数据类型&#xff0c;用于封装数据和操作。它是对象的模板或蓝图&#xff0c;描述了对象的属性&#xff08;成员变量&#xff09;和行为&#xf…

OJ练习第150题——分割回文串

分割回文串 力扣链接&#xff1a;131. 分割回文串 题目 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 Java代码 class Solution {List<List…