Python OpenCV实现Logo抠图与背景叠加

Elena
Elena
发布时间:2026-10-15| 6人浏览过
原创

本文介绍如何利用Python和OpenCV库实现图片抠图与背景叠加。通过创建Logo的灰度图像并设置阈值生成二值化mask,结合bitwise_and操作分离背景与前景,最终将处理后的Logo合成至目标背景图中。文中提供了完整的代码示例及颜色范围调整(inRange)的补充说明,帮助开发者掌握图像合成中的遮罩技术应用。

首先准备一张背景照片。

接着准备需要叠加的Logo图片。

最终合成的效果如图所示。

实现该效果的核心代码如下:


import cv2 as cv, numpy as np
# Load two images
img1 = cv.imread('227351.jpg') # 背景
img2 = cv.imread('logo.png') # logo
# I want to put logo on top-left corner, So I create a ROI
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
# Now create a mask of logo and create its inverse mask also
img2gray = cv.cvtColor(img2,cv.COLOR_BGR2GRAY)
ret, mask = cv.threshold(img2gray, 254, 255, cv.THRESH_BINARY) # 这个254很重要
mask_inv = cv.bitwise_not(mask)
cv.imshow('mask',mask_inv)
# Now black-out the area of logo in ROI
img1_bg = cv.bitwise_and(roi,roi,mask = mask) # 这里是mask,我参考的博文写反了,我改正了,费了不小劲
# Take only region of logo from logo image.
img2_fg = cv.bitwise_and(img2,img2,mask = mask_inv) # 这里才是mask_inv
# Put logo in ROI and modify the main image
dst = cv.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst
cv.imshow('res',img1)
cv.waitKey(0)
cv.destroyAllWindows()

补充说明:在Python OpenCV中,mask(遮罩)功能常用于颜色筛选,例如利用inRange函数提取特定颜色区域。

以下代码包含详细注解,供参考。


import cv2
import numpy as np
img = cv2.imread('IMG_0307.jpg')
orange_lower = np.array([11,43,46])
orange_upper = np.array([25,255,255]) #颜色色域
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #注意 一定要转换为hsv 
mask = cv2.inRange(img_hsv,orange_lower,orange_upper) #mask 启动
mask = cv2.erode(mask,None,iterations=2) 
mask = cv2.GaussianBlur(mask,(3,3),0)
#erode 和 GaussianBlur 是用来使得图片或视频更加模糊的 这样可以使得色彩突出更加明显,#色彩追踪也会更加精准
cv2.imshow('mask',mask)
cv2.imshow('img',img)
cv2.waitKey()

使用OpenCV处理图像颜色时,需借助mask遮罩来保留目标颜色,同时隐藏不需要的部分。

在上述代码中,通过mask遮罩保留了除橘色以外的所有颜色区域。

控制颜色范围的关键参数为orange_lower和orange_upper。

具体处理效果如下所示。

以上内容仅供参考。

以上为个人经验分享,旨在提供一定参考,欢迎支持本站。若存在错误或考虑不周之处,敬请指正。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。