OpenCV 两张大小不同图片的叠加

本文介绍了如何使用OpenCV工具进行不同大小图片的合成。通过addWeighted函数可以轻松实现两张图片的混合,并提供了具体示例代码。此外还讨论了如何为大图片创建合适的矩阵区域以进行图形合成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用openCV这个工具进行图片处理还是很简单的,这里总结一下两张大小不同的图片的和成。

openCV合唱两张类型,大小相同的图片是很简单的只需使用addWeighted函数就行了。

函数的参数是addWeighted ( 第一张鱼片,第一张图片所占的比例,第二张图片,第二张图片所占的比例, 0., 输出图片) ;

	Mat imageROI;
	imageROI = girl(Rect(0, 0, leave.cols, leave.rows));
	addWeighted(imageROI,0.5,leave,0.5,0,imageROI);
	imshow("girl",girl);

个人理解,请多多指教。

首先要创建一个矩阵这个矩阵要按照最小的那个图片来,将这个图片放置于大图片当中,有电箱ps中的选择框框,以后的图形合成会在这个框框内进行。下面进行图形合成的时候合成的两张图片是那张较小的图片和全出框框的那个图片,合成之后改变的是大图,二不是带框框的那个图片。

### 使用 Python 和 OpenCV 实现两张图像的叠加 要实现两张图像的叠加,可以利用 OpenCV 提供的功能来完成这一任务。以下是两种常见的方法: #### 方法一:使用 `cv2.addWeighted` 函数 此函数允许按照指定权重对两幅图像进行加权求和操作。其语法如下: ```python dst = cv2.addWeighted(src1, alpha, src2, beta, gamma) ``` 其中: - `src1`: 第一幅输入图像。 - `alpha`: 第一幅图像的权重系数。 - `src2`: 第二幅输入图像。 - `beta`: 第二幅图像的权重系数。 - `gamma`: 加到结果上的标量。 为了确保图像能够正常叠加,需保证两者具有相同的尺寸和通道数[^1]。 下面是一个完整的代码示例: ```python import cv2 import numpy as np # 读取图像 img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') # 调整第二张图大小以匹配第一张图 img2_resized = cv2.resize(img2, (img1.shape[1], img1.shape[0])) # 设置权重参数 alpha = 0.7 # 图像1的透明度 beta = 0.3 # 图像2的透明度 gamma = 0 # 偏移值 # 叠加图像 result = cv2.addWeighted(img1, alpha, img2_resized, beta, gamma) # 显示结果 cv2.imshow('Blended Image', result) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 方法二:使用简单的像素级相加 如果不需要调整权重比例,可以直接通过 NumPy 的数组运算将两张图像相加。需要注意的是,这种方法可能会导致像素溢出问题(超出 255),因此通常会先转换数据类型再执行计算[^2]。 下面是具体实现方式: ```python import cv2 import numpy as np # 读取并调整图像大小 img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') img2_resized = cv2.resize(img2, (img1.shape[1], img1.shape[0])) # 将uint8转成float64防止溢出 img1_float = img1.astype(np.float64) img2_float = img2_resized.astype(np.float64) # 进行逐像素相加 sum_img = img1_float + img2_float # 防止数值超过255后再转回uint8 sum_img_clipped = np.clip(sum_img, 0, 255).astype(np.uint8) # 展示最终效果 cv2.imshow('Summed Image', sum_img_clipped) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上就是基于 Python 和 OpenCV 实现图像叠加的主要方法[^3][^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值