对图像缩放平移旋转仿射变换在四个子窗口显示python代码
时间: 2024-09-09 20:17:07 浏览: 103
在Python中,我们可以使用OpenCV库来处理图像并进行缩放、平移、旋转和平移仿射变换。以下是一个简单的例子,展示了如何在四个子窗口中分别显示原始图像、缩放后的图像、旋转后的图像以及经过仿射变换的图像:
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
# 创建一个4x1的窗口布局
windows = (cv2.namedWindow('Original'), cv2.namedWindow('Zoomed'),
cv2.namedWindow('Rotated'), cv2.namedWindow('Affine'))
# 原始图像
cv2.imshow('Original', img)
# 缩放图像(例如50%)
zoom_img = cv2.resize(img, None, fx=0.5, fy=0.5)
cv2.imshow('Zoomed', zoom_img)
# 旋转图像(顺时针90度)
height, width = img.shape[:2]
rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), 90, 1)
rotated_img = cv2.warpAffine(img, rotation_matrix, (width, height))
cv2.imshow('Rotated', rotated_img)
# 平移仿射变换(向右移动200像素,向下移动100像素)
tx, ty = 200, 100
affine_matrix = np.float32([[1, 0, tx], [0, 1, ty]])
translated_img = cv2.warpAffine(img, affine_matrix, (img.shape[1], img.shape[0]))
cv2.imshow('Affine', translated_img)
# 等待用户按键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文