编写一个Python程序,如何使用OpenCV库对图像进行以下操作:读取、转换为灰度、缩放、旋转以及裁剪?并使用matplotlib库输出
时间: 2024-11-18 20:27:07 浏览: 18
在Python中,我们可以使用OpenCV (cv2) 库来处理图像,而Matplotlib用于可视化结果。以下是编写一个简单的程序,完成你所提到的图像操作:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 1. 读取图像
img = cv2.imread('image.jpg') # 替换为你的图片路径
# 2. 转换为灰度
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 3. 缩放
scale_factor = 0.5
resized_img = cv2.resize(gray_img, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)
# 4. 旋转
angle_degrees = 45
(h, w) = resized_img.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle_degrees, scale_factor)
rotated_img = cv2.warpAffine(resized_img, M, (w, h))
# 5. 裁剪
cropped_img = rotated_img[50:300, 100:500] # 这里假设我们要裁剪的部分是从左上角开始,可以根据需要调整坐标
# 使用matplotlib显示原始图像和处理后的图像
plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('Original Image')
plt.subplot(222), plt.imshow(cv2.cvtColor(gray_img, cv2.COLOR_GRAY2RGB)), plt.title('Grayscale')
plt.subplot(223), plt.imshow(cv2.cvtColor(resized_img, cv2.COLOR_GRAY2RGB)), plt.title('Resized')
plt.subplot(224), plt.imshow(cv2.cvtColor(cropped_img, cv2.COLOR_GRAY2RGB)), plt.title('Cropped')
plt.show()
阅读全文