使用 OpenCV 添加(混合)两个图像
目标
在本文中将学习:
● 什么是线性混合以及为什么它有用;
● 如何使用 addWeighted() 添加两个图像
理论
请注意
下面的解释来自 Richard Szeliski 的《计算机视觉: 算法和应用》一书
在之前的教程中,我们已经知道了一些像素运算符。一个有趣的二元(双输入)运算符是线性混合运算符:
g(x)=(1−α)f0(x)+αf1(x)
通过改变 α 值从 0→1,这个运算可以用于在两个图像或视频之间执行时间上的交叉融合,就像在幻灯片放映和电影制作中看到的那样(很酷,不是吗?)
源码
from __future__ import print_function
import cv2 as cv
alpha = 0.5
try:
raw_input # Python 2
except NameError:
raw_input = input # Python 3
print(''' 简易线性混合器
-----------------------
* 请输入 alpha [0.0-1.0]: ''')
input_alpha = float(raw_input().strip())
if 0 <= alpha <= 1:
alpha = input_alpha
# 加载
src1 = cv.imread('python.jpg')
src2 = cv.imread('opencv.jpg')
if src1 is None:
print("加载 src1 错误")
exit(-1)
elif src2 is None:
print("加载 src2 错误")
exit(-1)
# 混合图像
beta = (1.0 - alpha)
dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)
# 显示图像
cv.imshow('dst', dst)
cv.waitKey(0)
cv.destroyAllWindows()
复制
两个原图分别为:
解释
因为我们要执行:
g(x)=(1−α)f0(x)+αf1(x)
我们需要两个源图像(
src1 = cv.imread('python.jpg')
src2 = cv.imread('opencv.jpg')
复制
警告
我们要添加的 src1 和 src2 必须具有相同的大小(宽度和高度)和类型。
现在我们需要生成 g(x) 图像。使用函数 addWeighted() 非常方便:
beta = (1.0 - alpha)
dst = cv.addWeighted(src1, alpha, src2, beta, 0.0)
复制
上述代码的 Numpy 版本(但 cv 函数大约快2倍):
dst = np.uint8(alpha*(img1)+beta*(img2))
复制
由于 addWeighted() 产生:
dst=α⋅src1+β⋅src2+γ
在本例子中,gamma 在上述代码中是 0.0。
创建窗口,显示图像并等待用户结束程序。
cv.imshow('dst', dst)
cv.waitKey(0)
复制
结果:
(venv) c:\Python310test>python demo.py
简易线性混合器
-----------------------
* 请输入 alpha [0.0-1.0]:
0.6
官方文档:
https://docs.opencv.org/4.5.5/d5/d98/tutorial_mat_operations.html
文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
157次阅读
2025-04-01 16:20:44
mysql提升10倍count(*)的神器
大大刺猬
135次阅读
2025-03-21 16:54:21
官宣,Milvus SDK v2发布!原生异步接口、支持MCP、性能提升
ZILLIZ
107次阅读
2025-04-02 09:34:13
[MYSQL] query_id和STATEMENT_ID在不同OS上的关系
大大刺猬
77次阅读
2025-03-26 19:08:13
DataWorks :Data+AI 一体化开发实战图谱
阿里云大数据AI技术
51次阅读
2025-03-19 11:00:55
国密算法介绍
漫步者
48次阅读
2025-03-21 09:20:39
WingPro for Mac 强大的Python开发工具 v10.0.9注册激活版
一梦江湖远
40次阅读
2025-03-29 10:33:27
python操作MySQL数据库
怀念和想念
34次阅读
2025-03-30 23:22:07
Python使用MySQL数据库(新)
怀念和想念
30次阅读
2025-03-26 09:11:04
AI与我共创WEB界面
布衣
28次阅读
2025-04-14 22:13:51