Python OpenCV实现图像叠加、融合与按位运算详解

小岛来信
小岛来信
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍在Python中使用OpenCV进行图像处理的三种核心操作:图像叠加、图像融合及按位运算。通过对比cv2.add与Numpy加法差异,解析addWeighted权重混合原理,并演示利用掩码和ROI实现非矩形区域(如Logo)的透明叠加技巧,提供完整代码与参数说明。

1图像叠加

实现图像叠加主要依赖OpenCV提供的cv.add()函数,或者直接利用Numpy进行数组相加(res = img1 + img2)。执行此操作时,需确保参与运算的两个图像具有相同的位深和数据类型;若第二个图像为标量值,则可直接相加。

NOTE:

  • 需注意OpenCV的加法属于饱和运算,即结果超过最大值255时会被截断为255;而Numpy的加法采用模运算,超过255的值会取模回绕。
  • 鉴于上述差异,在进行图像叠加时,OpenCV函数能提供更符合视觉预期的结果,因此建议优先使用OpenCV内置函数。

代码:


import cv2
import numpy as np

x = np.uint8([250])
y = np.uint8([10])

print( cv2.add(x,y) ) # 250+10 = 260 => 255
print( x+y )          # 250+10 = 260 % 256 = 4

输出: [[255]] [4]

2图像融合

图像融合本质上也是一种加法操作,但关键在于为两个图像分配不同的权重(取值范围0到1之间)。通过调整权重,可以产生图像混合或半透明的视觉效果。

代码:


import cv2
import numpy as np

img1 = cv2.imread('img.jpg')
img2 = cv2.imread('img2.jpg')
img2 = cv2.resize(img2,(480,331))#统一图片大小

dst = cv2.addWeighted(img1,0.5,img2,0.5,0)

cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

3按位操作

按位操作涵盖AND、OR、NOT及XOR四种基本运算。若需将OpenCV徽标置于图像上方,直接叠加会改变背景颜色,而融合则产生透明效果。若目标区域为矩形,可通过ROI(感兴趣区域)按前述方法处理;但针对非矩形徽标,利用按位操作结合掩码是实现不透明叠加的有效方案。

代码:


import cv2
import numpy as np

img1 = cv2.imread('img.jpg')
img2 = cv2.imread('img1.jpg')

img2 = cv2.resize(img2,(100,100))
# 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 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 200, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

# Now black-out the area of logo in ROI
img1_bg = cv2.bitwise_and(roi,roi,mask = mask)

# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)

# Put logo in ROI and modify the main image
dst = cv2.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst

cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

Arithmetic Operations on Images

到此这篇关于python中opencv图像叠加、图像融合、按位操作的具体实现的文章就介绍到这了,更多相关opencv图像叠加、图像融合、按位操作内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

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

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 算法库。