使用opencv对图强进行缩放和旋转
时间: 2024-11-03 12:17:10 浏览: 22
基于QT+Opencv模板匹配支持(缩放、旋转)
5星 · 资源好评率100%
在OpenCV库中,你可以通过以下几个步骤对图像进行缩放(zooming)和旋转:
1. **缩放**:
- **等比例缩放**(resize):`cv2.resize(image, dsize, interpolation=INTER_LINEAR)`。这里的`dsize`是一个元组,指定新图像的大小。`interpolation`参数用于选择插值方法,如`cv2.INTER_LINEAR`(线性插值)或`cv2.INTER_CUBIC`(立方插值)。
- **缩放因子**:如果需要根据特定比例缩放,可以用`scaleFactor`,例如`new_dim = (old_dim * scale_factor, old_dim * scale_factor)`,然后使用`cv2.resize()`。
2. **旋转**:
- `getRotationMatrix2D(center, angle, scale)`: 这个函数返回一个旋转矩阵,其中`center`是旋转中心,`angle`是逆时针方向的旋转角度,`scale`是缩放比例。如果你只想旋转而不缩放,设`scale=1`。
- `warpAffine(src, M, dsize[, dst[, flags]])`: 对输入图像应用`M`矩阵进行仿射变换。这里`dst`是输出图像,如果不指定则会在原地修改`src`。
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread('image.jpg')
# 缩放示例
resized_img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)
# 旋转示例
center = tuple(np.array(img.shape[1::-1]) / 2)
rot_mat = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated_img = cv2.warpAffine(img, rot_mat, img.shape[:2])
# 写入结果到文件或显示
cv2.imwrite('scaled_image.jpg', resized_img)
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文