opencv-python numpy
时间: 2025-01-16 18:02:21 浏览: 42
### 如何在 OpenCV-Python 中使用 NumPy 进行图像处理
#### 图像读取与显示
OpenCV 可以通过 `cv2.imread()` 函数来加载图像文件,并将其转换成 NumPy 数组的形式。这使得可以利用 NumPy 的强大功能来进行各种操作。
```python
import cv2
import numpy as np
# 加载彩色图像作为灰度图
img_gray = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 显示图像
cv2.imshow('Gray Image', img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
#### 基本变换:调整大小和旋转
NumPy 提供了矩阵运算的能力,这对于执行几何变换非常有用。下面的例子展示了如何改变图像尺寸以及应用仿射变换实现图像旋转[^1]。
```python
# 调整图像大小
resized_img = cv2.resize(img_gray, (new_width, new_height))
# 获取旋转变换矩阵
rotation_matrix = cv2.getRotationMatrix2D((center_x, center_y), angle=90, scale=1)
rotated_img = cv2.warpAffine(resized_img, rotation_matrix, dsize=(width, height))
```
#### 颜色空间转换
有时需要将 BGR 格式的图像转为其他颜色模型比如 HSV 或者 RGB 来更好地处理某些类型的视觉数据。此过程同样依赖于 NumPy 对数组的操作效率。
```python
# 将BGR格式转化为RGB格式
bgr_image = cv2.imread('colorful_image.png')
rgb_image = cv2.cvtColor(bgr_image, code=cv2.COLOR_BGR2RGB)
# 使用 Matplotlib 展示 RGB 图片
plt.figure(figsize=[8, 8])
plt.imshow(rgb_image); plt.axis("off")
```
#### 形态学操作
形态学操作如腐蚀、膨胀等对于去除噪声或者增强特定形状特征很有帮助。这些操作通常基于二值化后的图像完成,在这里也涉及到大量的按位逻辑计算,而这些都是由 NumPy 实现的。
```python
kernel = np.ones(shape=(5, 5), dtype=np.uint8) # 创建内核用于形态学操作
dilated_img = cv2.dilate(src=img_binary, kernel=kernel, iterations=1)
eroded_img = cv2.erode(src=dilated_img, kernel=kernel, iterations=1)
```
阅读全文
相关推荐


















