资讯专栏INFORMATION COLUMN

opencv python 基于GrabCut算法的交互式前景提取

李昌杰 / 1228人阅读

摘要:输入图像蒙版图像,指定哪些区域是背景,前景或可能的背景前景等它是由下面的标志,,,,,或简单地将,,,传递给图像。

Interactive Foreground Extraction using GrabCut Algorithm

mask, bgdModel, fgdModel = cv2.grabCut(img, mask, 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类型的0数组.

iterCount :算法运行的迭代次数.

mode :cv2.GC_INIT_WITH_RECT或cv2.GC_INIT_WITH_MASK,或者组合起来决定我们是画矩形还是最后的触点.

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread("messi5.jpg")
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,290)
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()

梅西少了头发,我们会有1像素的修补(确定前景),与此同时,有些地方的地面已经出现了我们不想要的画面,还有一些标志,我们需要移除它们.在那里我们提供了0像素的修补(当然是背景).

# newmask is the mask image I manually labelled
newmask = cv2.imread("newmask.png",0)

# wherever it is marked white (sure foreground), change mask=1
# wherever it is marked black (sure background), change mask=0
mask[newmask == 0] = 0
mask[newmask == 255] = 1

mask, bgdModel, fgdModel = cv2.grabCut(img,mask,None,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_MASK)

mask = np.where((mask==2)|(mask==0),0,1).astype("uint8")
img = img*mask[:,:,np.newaxis]
plt.imshow(img),plt.colorbar(),plt.show()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42050.html

相关文章

  • B站智能防挡弹幕一种python实现

    摘要:将图片的处理方法放到视频中的每一帧,再加上弹幕飞过的效果,就完成了版的智能防挡弹幕。不知道站的实现方法是怎样,是否有人工干预,是否有预计算。 某天代码写得老眼昏花,去B站上摸鱼,突然发现奇怪的现象: showImg(https://segmentfault.com/img/remote/1460000017911829?w=600&h=284); 哟呵,B站竟然做了 视频前景提取 ,把...

    jzzlee 评论0 收藏0
  • opencv python 基于分水岭算法图像分割

    摘要:理论任何灰度图像都可以看作是地形表面,其中高强度表示山峰和丘陵,而低强度表示山谷用不同颜色的水标签填充每个孤立的山谷局部最小值,随着水的上升,明显具有不同的颜色的水将开始融合为避免这种情况,需要在水合并的位置建立障碍,在所有的山峰都被水淹没 Image Segmentation with Watershed Algorithm 理论 任何灰度图像都可以看作是地形表面,其中高强度表示山...

    mikasa 评论0 收藏0
  • Python十大图像处理工具

    摘要:之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具。该库包含基本的图像处理功能,包括点操作使用一组内置卷积内核进行过滤以及颜色空间转换。图像处理系统有时被称为图像处理的瑞士军刀。 showImg(https://segmentfault.com/img/remote/1460000019442221);编译:张秋玥、小七、蒋宝尚 本...

    yuanxin 评论0 收藏0
  • 常用十大python图像处理工具

    摘要:但无论是用于何种用途,这些图像都需要进行处理。图像处理中的常见任务包括显示图像,基本操作如裁剪翻转旋转等,图像分割,分类和特征提取,图像恢复和图像识别。图像处理系统有时被称为图像处理的瑞士军刀。 showImg(https://segmentfault.com/img/remote/1460000019631626); 原文标题:10 Python image manipulation...

    Crazy_Coder 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<