将以下两张图像进行读取、显示,并将两张图像用opencv中提供的add函数、numpy中提供的+运算以及add weighted函数三种方法进行加和,并将三种加和结果保存
时间: 2024-10-12 15:05:51 浏览: 7
首先,我们需要使用Python的OpenCV (cv2) 和 NumPy 库来完成这个任务。以下是步骤:
1. **安装所需库**:
如果还没有安装OpenCV和NumPy,可以在命令行中分别运行以下命令:
```
pip install opencv-python
pip install numpy
```
2. **导入库**:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
```
3. **读取图像**:
使用`cv2.imread()`函数读取两幅图像,例如 `img1` 和 `img2`。
```python
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
```
4. **检查图像是否读取成功**:
```
if img1 is None or img2 is None:
print("无法打开图片")
```
5. **转换到相同的通道数**:
图像通常需要转换成相同类型的通道(灰度或RGB),并调整大小以便相加。这里假设都是单通道或三通道。
6. **添加操作**:
- **OpenCV的add函数**:
```python
result_add_cv2 = cv2.add(img1, img2)
```
- **NumPy的+运算**:
```python
result_plus_np = img1 + img2
```
- **add weighted函数(OpenCV中对图像做线性加权融合)**:
```python
weight = 0.5 # 可调整权重值,范围通常是0-1之间
result_weighted_cv2 = cv2.addWeighted(img1, weight, img2, 1-weight, 0)
```
7. **显示原始图像和结果**:
```python
titles = ['Image 1', 'Image 2', 'cv2.add', 'np.add', 'cv2.addWeighted']
for i in range(1, len(titles)+1):
plt.subplot(2, 3, i), plt.imshow(cv2.cvtColor(imgs[i-1], cv2.COLOR_BGR2RGB)), plt.title(titles[i-1])
plt.show()
```
8. **保存结果**:
对于每个处理后的图像,可以使用`cv2.imwrite()`保存到文件。
```python
cv2.imwrite('result_add_cv2.jpg', result_add_cv2)
cv2.imwrite('result_plus_np.jpg', result_plus_np)
cv2.imwrite('result_weighted_cv2.jpg', result_weighted_cv2)
```