python 图片自定义缩放 函数 只用numpy
时间: 2024-02-16 12:04:40 浏览: 129
可以使用numpy中的resize函数来实现图片的自定义缩放。示例代码如下:
```python
import numpy as np
def resize_img(img, scale):
# 获取原始图片的宽度和高度
h, w = img.shape[:2]
# 计算缩放后的宽度和高度
new_w, new_h = int(w * scale), int(h * scale)
# 使用resize函数进行缩放
new_img = np.resize(img, (new_h, new_w, img.shape[2]))
return new_img
```
其中,img为原始图片的numpy数组,scale为缩放比例。函数返回缩放后的图片的numpy数组。
相关问题
python 图片自定义缩放函数 只用numpy
下面是一个基于numpy的图片自定义缩放函数的示例代码:
```python
import numpy as np
from PIL import Image
def resize(image, size):
# 获取原始图片的宽度和高度
width, height = image.shape[:2]
# 计算缩放比例
ratio_w = size[0] / width
ratio_h = size[1] / height
# 创建新图片的数组
new_image = np.zeros((size[1], size[0], 3), dtype=np.uint8)
# 遍历新图片的每个像素
for y in range(size[1]):
for x in range(size[0]):
# 计算原始图片上对应的像素位置
src_x = int(x / ratio_w)
src_y = int(y / ratio_h)
# 处理边界情况
if src_x >= width:
src_x = width - 1
if src_y >= height:
src_y = height - 1
# 获取原始像素的颜色值并赋值给新图片
new_image[y, x] = image[src_y, src_x]
return new_image
# 加载原始图片
image = np.array(Image.open('test.jpg'))
# 缩放图片
new_image = resize(image, (400, 300))
# 保存新图片
Image.fromarray(new_image).save('test_resized.jpg')
```
该函数接受两个参数,第一个是原始图片的numpy数组,第二个是缩放后的大小。函数会先计算缩放比例,然后遍历新图片的每个像素,计算出原始图片上对应的像素位置,最后将原始像素的颜色值赋值给新图片。需要注意的是,这里假设原始图片的颜色模式为RGB,因此新图片的第三个维度为3。如果原始图片的颜色模式不同,需要修改代码中的颜色值赋值部分。
python 图片自定义缩放 只用numpy
可以使用numpy中的ndarray的切片和reshape等方法来实现图片的自定义缩放。示例代码如下:
```python
import numpy as np
def resize_img(img, scale):
# 获取原始图片的宽度和高度
h, w = img.shape[:2]
# 计算缩放后的宽度和高度
new_w, new_h = int(w * scale), int(h * scale)
# 使用reshape方法将ndarray转换为三维数组
img_reshape = img.reshape((h, w, -1))
# 使用切片方法进行缩放
new_img = img_reshape[::int(1/scale), ::int(1/scale), :]
# 将缩放后的ndarray转换为二维数组
new_img = new_img.reshape((new_h, new_w, -1))
return new_img
```
其中,img为原始图片的numpy数组,scale为缩放比例。函数返回缩放后的图片的numpy数组。
阅读全文