在OpenCV库中进行读取Lena.tiff和Monkey.tiff图片,分别进行加、减、乘、除、与(需要灰度和二值化)、或(需要灰度和二值化)、非(需要灰度和二值化)和几何运算(平移、旋转、放大缩小、翻转)操作后进行显示和保存
时间: 2024-11-20 14:41:59 浏览: 12
在OpenCV库中进行这些图像处理操作,首先你需要安装并导入OpenCV库。以下是一系列步骤来完成你的需求:
1. **读取图片**:
使用`cv2.imread()`函数读取Lena和Monkey图像文件,例如:
```python
import cv2
img_lena = cv2.imread('Lena.tiff', cv2.IMREAD_GRAYSCALE) # 黑白模式
img_monkey = cv2.imread('Monkey.tiff', cv2.IMREAD_GRAYSCALE)
```
2. **基本算术运算**:
对于加法、减法、乘法和除法,直接在像素级别进行操作:
```python
img_sum = cv2.add(img_lena, img_monkey)
img_sub = cv2.subtract(img_lena, img_monkey)
img_prod = cv2.multiply(img_lena, img_monkey)
img_div = cv2.divide(img_lena, img_monkey, scale=255.0) # 注意除以的数值范围
```
3. **二值化(阈值分割)**:
可以使用`cv2.threshold()`函数将灰度图像转换为二值图像:
```python
_, img_thresholded = cv2.threshold(img_lena, 127, 255, cv2.THRESH_BINARY)
_, img_thresholded_monkey = cv2.threshold(img_monkey, 127, 255, cv2.THRESH_BINARY)
```
4. **布尔运算(与、或、非)**:
这些操作通常通过位运算来进行,比如:
```python
img_and = cv2.bitwise_and(img_lena, img_monkey)
img_or = cv2.bitwise_or(img_lena, img_monkey)
img_not = cv2.bitwise_not(img_lena)
```
5. **几何运算**:
- **平移**: `cv2.warpAffine()`
- **旋转**: `cv2.getRotationMatrix2D() + cv2.warpAffine()`
- **缩放**: `cv2.resize()`
- **翻转**: 已经包含在`flip()`函数中(如上面的水平翻转部分)
6. **显示和保存**:
最后,你可以使用`cv2.imshow()`显示结果,并用`cv2.imwrite()`保存:
```python
for img in [img_sum, img_sub, img_prod, img_div, img_thresholded, img_thresholded_monkey]:
cv2.imshow('Operation Result', img)
cv2.waitKey(0) # 等待用户按键,按任意键继续
cv2.imwrite(f'result_{img_name}.tiff', img)
cv2.destroyAllWindows()
```
记得替换`img_name`为你实际的文件名。
阅读全文