将图像按照原图像比例无损放大,代码
时间: 2023-06-15 19:06:52 浏览: 124
图片无损放大
对于无损放大,可以使用双线性插值法实现。
双线性插值法是一种基于周围已知像素点计算新像素点灰度值的方法,其原理是对于某个像素点,先在水平方向上做线性插值得到两个值,再在竖直方向上做线性插值得到最终的像素值。
下面给出 Python 代码实现:
```python
import cv2
def resize_image(img, scale):
# 获取图像尺寸
height, width = img.shape[:2]
# 计算放缩后的尺寸
new_height, new_width = int(height * scale), int(width * scale)
# 用双线性插值法对图像进行放缩
# 注意:此处使用的是 cv2.INTER_LINEAR,即双线性插值
resized_img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)
return resized_img
```
其中,`img` 是原图像,`scale` 是放缩比例。函数返回放缩后的图像。
例如,将一张 `lena.png` 图像放缩为原图像的 2 倍大小:
```python
img = cv2.imread('lena.png')
resized_img = resize_image(img, 2)
cv2.imshow('Resized Image', resized_img)
cv2.waitKey()
```
其中,`waitKey()` 用于等待用户按下任意键,防止窗口闪退。
阅读全文