python利用OpenCV的cv2.warpAffine()仿射函数编写一个图像缩放的程序,要求将原图的宽度和高度同时缩放50%。
时间: 2024-01-22 13:17:16 浏览: 104
图像缩放程序
4星 · 用户满意度95%
可以使用以下代码实现:
```python
import cv2
# 读取原始图像
img = cv2.imread("original.jpg")
# 获取原始图像的宽度和高度
height, width, _ = img.shape
# 缩放系数为0.5
scale = 0.5
# 计算缩放后的宽度和高度
new_width = int(width * scale)
new_height = int(height * scale)
# 定义缩放矩阵
M = cv2.getAffineTransform(
src=np.float32([[0, 0], [width - 1, 0], [0, height - 1]]),
dst=np.float32([[0, 0], [new_width - 1, 0], [0, new_height - 1]])
)
# 进行图像缩放
img_resized = cv2.warpAffine(img, M, (new_width, new_height))
# 显示缩放后的图像
cv2.imshow("Resized Image", img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
需要注意的是,cv2.getAffineTransform()函数用于计算缩放矩阵,其参数分别为原始图像中的三个点和缩放后图像中对应的三个点。在本例中,我们选择原始图像的左上角、右上角和左下角三个点作为参考点,然后计算出对应的缩放后的三个点,从而得到缩放矩阵。最后使用cv2.warpAffine()函数进行图像缩放。
阅读全文