Python OpenCV GrabCut算法抠图实现

Alice
Alice
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍利用Python和OpenCV库中的GrabCut算法进行图像抠图的完整实现。通过初始化背景与前景模型,指定感兴趣区域,执行分割迭代,并处理掩膜以提取目标图像。代码包含图像读取、模型初始化、GrabCut调用及结果可视化等关键步骤,适合初学者参考学习。

本文分享了一段使用Python进行图像抠图的完整示例代码,供读者参考学习。

该方案核心采用了OpenCV库提供的grabCut算法来实现高精度的图像分割。

以下是具体的代码实现部分。

# encoding:utf-8
# 图像提取
# create by 
 
import numpy as np
import cv2
from matplotlib import pyplot as plt
 
img = cv2.imread('1.jpg')
mask = np.zeros(img.shape[:2], np.uint8)
 
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
 
rect = (20, 20, 413, 591)
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 10, cv2.GC_INIT_WITH_RECT)
 
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
img = img * mask2[:, :, np.newaxis]
img += 255 * (1 - cv2.cvtColor(mask2, cv2.COLOR_GRAY2BGR))
# plt.imshow(img)
# plt.show()
img = np.array(img)
mean = np.mean(img)
img = img - mean
img = img * 0.9 + mean * 0.9
img /= 255
plt.imshow(img)
plt.show()

以上即为本文的全部内容,希望这段代码能对读者的学习有所帮助,同时也欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表