(1)编写程序,使用cv2.warpAffine()函数使一幅图像放大为原来的二倍后,顺时针旋转90度再向左平移20个单位,向上平移20单位,不改变图片大小。 (2)编写程序,将一幅图像剪切为原图像
时间: 2024-09-14 16:10:36 浏览: 49
编程实现一幅图像的平移、镜像、旋转、缩小和放大。整理.pdf
(1)要在Python中使用`cv2.warpAffine()`函数完成这些操作,首先需要导入`opencv-python`库,并确保已经安装了它。假设我们有原始图像`img`,可以按照以下步骤操作:
```python
import cv2
import numpy as np
# 读取图像
original_img = cv2.imread('input_image.jpg')
# 定义变换矩阵,先放大到原来两倍
scale_factor = 2
height, width = original_img.shape[:2]
new_width, new_height = int(width * scale_factor), int(height * scale_factor)
M_scale = np.float32([[scale_factor, 0, -20], [0, scale_factor, -20]])
# 顺时针旋转90度
rotation_angle = 90
M_rotation = cv2.getRotationMatrix2D((new_width / 2, new_height / 2), rotation_angle, 1)
# 合并两个变换,先缩放后旋转
M_total = np.dot(M_rotation, M_scale)
# 应用变换
transformed_img = cv2.warpAffine(original_img, M_total, (new_width, new_height))
# 保存结果
cv2.imwrite('output_image.jpg', transformed_img)
```
请注意替换 `'input_image.jpg'` 为实际的图像路径。
(2)同样使用`cv2`库,将图像剪切成特定区域,我们可以指定源点`(x1, y1)`和目标点`(x2, y2)`。例如,如果要裁剪从左上角(0,0)到右下角(width, height),可以这样做:
```python
cropping_coords = (0, 0, width, height) # 假设width和height是原图的实际尺寸
cropped_img = original_img[cropping_coords[1]:cropping_coords[3], cropping_coords[0]:cropping_coords[2]]
# 保存裁剪后的图像
cv2.imwrite('cropped_image.jpg', cropped_img)
```
这里假设 `width` 和 `height` 是输入图像的宽度和高度,如果不是,请相应地调整 `cropping_coords` 参数。
阅读全文