Opencv实现抠图

import cv2 as cv
import matplotlib.pyplot as plt

img1 = cv.imread(r"C:\Users\Administrator\Desktop\logo.png")
rows,cols = img1.shape[0:2]
img2 = cv.imread(r"C:\Users\Administrator\Desktop\Messi.jpg")
roi = img2[0:rows,0:cols]
img1_gray = cv.cvtColor(img1,cv.COLOR_BGR2GRAY)

ret,img1_thres = cv.threshold(img1_gray,200,255,cv.THRESH_BINARY_INV)
img1_fg =cv.add(img1,img1,mask=img1_thres)    #拿到logo图案的前景

原图如下:想将左上角的图扣下做素材

这样就完成了抠图做素材的所有步骤了

接下来详解下代码:

img1_gray = cv.cvtColor(img1,cv.COLOR_BGR2GRAY)
  1. 此处是将图像由原图转成了灰度图

ret,img1_thres = cv.threshold(img1_gray,200,255,cv.THRESH_BINARY_INV)
threshold函数作用:
1.去掉噪,例如过滤很小或很大像素值的图像点。
2.threshold函数python版原型:
3.retval, dst = cv.threshold( src, thresh, maxval, type[, dst] )

参数说明:

src:原图像。 dst:结果图像。

thresh:当前阈值。 maxVal:最大阈值,一般为255.

cv.THRESH_BINARY_INV
HRESH_BINARY_INV的作用与THRESH_BINARY相反,大于thresh的值置0,小于等于thresh的值置maxval

2.这就是转化后的模样:

3.图片融合

img1_fg =cv.add(img1,img1,mask=img1_thres) 
最后就得到黑底抠图素材啦

是不是很完美,你也可以试一试

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS上使用OpenCV实现抠图背景图替换功能是可行的。OpenCV是一个开源的计算机视觉库,它提供了各种图像处理和分析技术,包括图像分割和图像合成等功能,非常适合进行图像背景替换。 具体实现步骤如下: 1. 导入OpenCV库:在iOS项目中,首先需要将OpenCV库导入到项目中,并进行相应的配置。 2. 图像分割:使用OpenCV提供的图像分割算法,如GrabCut算法,将目标对象与背景进行分离。该算法需要输入一张包含目标对象的图像,并对其进行初始化,引导GrabCut算法进行分割。 3. 背景替换:根据分割得到的目标对象,将它与另一张背景图像进行合成。可以使用OpenCV提供的透明度混合函数,将目标对象与背景图像进行混合。具体操作是通过像素级的合成运算,计算目标对象像素与背景图像像素之间的混合比例,从而实现替换背景的效果。 4. 后续处理:根据需求,可以对合成后的图像进行调整和优化。例如,可以对合成后的图像进行色彩调整、亮度调整或者模糊处理,以使合成的结果更加自然。 需要注意的是,在实现抠图背景图替换功能时,选择合适的图像分割算法和优化方法是非常重要的。这可能需要根据具体需求和实际情况进行调试和优化。 总结起来,使用iOS上的OpenCV库可以很好地实现抠图背景图替换功能。通过图像分割和背景替换等技术手段,可以将目标对象与不同的背景进行合成,实现抠图背景图替换的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值