opencv 绿背景抠图

  ps:写之前废话一下,到新公司刚刚好一个月了,公司是一家外企,和上海这边迪士尼合作,到新公司是做图形处理相关的项目,今天终于做完了第一个接手的项目,绿背景抠图,从完全不知道到完成第一个项目,瞬间有了一点点成就的感觉。

 绿背景抠图:

1.绿背景相片

2.制作掩图


3,利用mask图来扣除图片中的人物


先来说一下思路吧。

  我们利用循环找图片中绿色的像素。

  把绿色标记为(0,0,0),把要扣出来的前景标记为(255,255,255),这样我们就能制作出掩图(mask图)。

 利用copyTo调用mask图作为参数扣出前景。


代码就不上,由于是公司的项目。再说也不是很难。小小提示下,如何寻找图中绿色的像素是关键和处理绿色像素,如果一种方法不理想,可以转换到其他颜色空间,rgb到hsv、hls、lab等等其他颜色空间试试就好了。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
对于使用OpenCV来进行图像背景替换,一种常见的方法是使用图像分割和蒙版技术。以下是一个基本的步骤: 1. 导入必要的库: ```python import cv2 import numpy as np ``` 2. 加载图像: ```python image = cv2.imread('input_image.jpg') background = cv2.imread('background_image.jpg') ``` 3. 对图像进行分割: 可以使用各种图像分割算法,如GrabCut、人工智能模型等。这里以GrabCut为例: ```python mask = np.zeros(image.shape[:2], np.uint8) bgdModel = np.zeros((1,65),np.float64) fgdModel = np.zeros((1,65),np.float64) rect = (50, 50, image.shape[1]-50, image.shape[0]-50) # 定义前景区域的矩形边界 cv2.grabCut(image, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT) # 执行GrabCut算法 # 创建一个蒙版,将GrabCut输出的可能前景标记和可能背景标记设置为前景(确定)或背景(确定) mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8') ``` 4. 通过蒙版将前景提取出来: ```python foreground = image * mask2[:,:,np.newaxis] ``` 5. 调整前景和背景的大小: ```python foreground = cv2.resize(foreground, (background.shape[1], background.shape[0])) ``` 6. 替换背景: ```python result = cv2.bitwise_or(background, foreground) ``` 7. 显示结果: ```python cv2.imshow('Result', result) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这只是一个简单的示例,你还可以根据具体需求进行更复杂的图像处理和优化。同样,你可以尝试其他的图像分割算法和技术来实现背景替换。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值