opencv grabCut前景后景分割去除背景

参考:

https://zhuanlan.zhihu.com/p/523954762

https://docs.opencv.org/3.4/d8/d83/tutorial_py_grabcut.html

环境本次:

python 3.10

提取前景:

1、需要先把前景物体框出来

需要坐标信息,可以用windows自带的画图简单提取像素

矩形的格式为 (x, y, width, height)

rect = (118, 120, 732, 835)

定义了一个矩形区域,该区域用于初始化 GrabCut 算法。这个矩形区域的参数表示:

118:矩形左上角的 x 坐标。

120:矩形左上角的 y 坐标。

732:矩形的宽度。

835:矩形的高度。

因此,这个矩形从图像的坐标 (118, 120) 开始,宽度为 732 像素,高度为 835 像素。

2、完整代码

bash 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread(r"C:\Users***\long.png")

# 创建一个与图像大小相同的掩码
mask = np.zeros(image.shape[:2], np.uint8)

# 创建两个数组,用于存储算法内部使用的临时数组
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)

# 定义一个矩形区域,该区域包含我们想要分割的前景物体
# 矩形的格式为 (x, y, width, height)
rect = (118, 120, 732, 835)

# 应用 GrabCut 算法
cv2.grabCut(image, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)

# 创建一个新的掩码,将可能的前景和确定的前景合并
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')

# 将掩码应用于图像
result = image * mask2[:, :, np.newaxis]

# 显示原始图像和分割结果
plt.subplot(121), plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.title('Segmented Image'), plt.xticks([]), plt.yticks([])
plt.show()
相关推荐
Cherry的跨界思维几秒前
5、Python长图拼接终极指南:Pillow/OpenCV/ImageMagick三方案
javascript·python·opencv·webpack·django·pillow·pygame
大千AI助手几秒前
多重共线性:机器学习中的诊断与应对策略
人工智能·机器学习·线性回归·相关性·大千ai助手·多重共线性·线性组合
阿杰学AI1 分钟前
AI核心知识41——大语言模型之 MCP(简洁且通俗易懂版)
人工智能·ai·语言模型·aigc·agi·mcp·模型上下文协议
边缘计算社区1 分钟前
风向变了?EE Times:AI 的未来,现在全看边缘计算
人工智能·边缘计算
玖日大大5 分钟前
AI 模型全景解析:从基础原理到产业落地(2025 最新版)
人工智能
腾飞开源6 分钟前
27_Spring AI 干货笔记之 OpenAI SDK 聊天功能(官方支持)
人工智能·多模态·工具调用·spring ai·openai sdk·github models·示例控制器
有来有去95276 分钟前
[模型量化]-大模型量化效果评价-Qwen2.5-72B
人工智能·语言模型·gpu算力
斯外戈的小白10 分钟前
【NLP】one-hot到word2vec发展路线
人工智能·自然语言处理·word2vec
zhurui_xiaozhuzaizai10 分钟前
RL 训练中的“训练-推理不匹配”难题:根源分析于解决办法(重要性采样IS 、 切回 FP16精度)
人工智能
爱写代码的小朋友11 分钟前
OpenCV 视频目标跟踪详解:MeanShift 与 CamShift 算法实战
opencv·目标跟踪