【基础】使用OpenCV读取、显示与保存图像
发布时间: 2024-06-27 04:12:35 阅读量: 113 订阅数: 149
![【基础】使用OpenCV读取、显示与保存图像](https://img-blog.csdnimg.cn/20200320110306440.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTkxOTE0,size_16,color_FFFFFF,t_70)
# 1. OpenCV图像处理基础**
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了丰富的函数和算法,用于图像处理、计算机视觉和机器学习。OpenCV广泛应用于各种领域,包括机器人技术、自动驾驶、医疗成像和工业自动化。
# 2. 图像读取与显示
### 2.1 读取图像
#### 2.1.1 使用imread()函数读取图像
`imread()` 函数是 OpenCV 中用于读取图像的常用函数。它接受图像文件路径作为输入,并返回一个 Numpy 数组,其中包含图像数据。
```python
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 检查图像是否读取成功
if image is None:
print('Error: Image not found or could not be read.')
else:
print('Image successfully read.')
```
**参数说明:**
* `filename`: 图像文件路径
* `flags`: 指定图像读取标志,默认为 `cv2.IMREAD_COLOR`(读取彩色图像)
**代码逻辑:**
1. 导入 OpenCV 库。
2. 使用 `imread()` 函数读取图像,并将结果存储在 `image` 变量中。
3. 检查 `image` 是否为 `None`,以确定图像是否读取成功。
#### 2.1.2 读取图像的各种格式
OpenCV 支持读取各种图像格式,包括:
| 格式 | 扩展名 |
|---|---|
| JPEG | .jpg, .jpeg |
| PNG | .png |
| BMP | .bmp |
| TIFF | .tiff, .tif |
| RAW | .raw |
```python
# 读取 JPEG 图像
image = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
# 读取 PNG 图像
image = cv2.imread('image.png', cv2.IMREAD_COLOR)
# 读取 BMP 图像
image = cv2.imread('image.bmp', cv2.IMREAD_COLOR)
```
**参数说明:**
* `flags`: 指定图像读取标志,可以指定读取彩色图像(`cv2.IMREAD_COLOR`)、灰度图像(`cv2.IMREAD_GRAYSCALE`)或透明度通道(`cv2.IMREAD_UNCHANGED`)
### 2.2 显示图像
#### 2.2.1 使用imshow()函数显示图像
`imshow()` 函数用于在窗口中显示图像。它接受图像和窗口名称作为输入。
```python
# 显示图像
cv2.imshow('Image', image)
# 等待用户按下任意键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
**参数说明:**
* `window_name`: 窗口名称
* `image`: 要显示的图像
**代码逻辑:**
1. 使用 `imshow()` 函数显示图像,指定窗口名称为 "Image"。
2. 使用 `waitKey(0)` 等待用户按下任意键关闭窗口。
3. 使用 `destroyAllWindows()` 销毁所有 OpenCV 窗口。
#### 2.2.2 调整图像窗口大小和位置
可以使用 `namedWindow()` 函数创建自定义大小和位置的图像窗口。
```python
# 创建一个 500x500 的窗口,位于屏幕左上角
cv2.namedWindow('Image', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Image', 500, 500)
cv2.moveWindow('Image', 0, 0)
# 显示图像
cv2.imshow('Image', image)
# 等待用户按下任意键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
**参数说明:**
* `window_name`: 窗口名称
* `flags`: 指定窗口标志,可以指定窗口类型(`cv2.WINDOW_NORMAL`、`cv2.WINDOW_AUTOSIZE` 等)
* `width`: 窗口宽度
*
0
0