用skimage实现,地址是:"C:\Users\20220\Desktop\3.jpg",将原图像缩小到宽高各是原来的一半,保持图片原始尺寸,缩小后的图像应该居中(图片中心与图像中心重合)。将除图像以外的像素设置为蓝色,显示图片。
时间: 2024-09-27 15:06:00 浏览: 52
在Python中,你可以使用`skimage`库中的`resize`函数来缩放图片,并结合一些基本的图像处理技巧来实现这个需求。首先,你需要导入所需的库并读取图片。然后,按照指定的宽度和高度比例缩放图像,使其居中,最后将非图像区域设为蓝色。
以下是使用`skimage.io`、`skimage.transform`以及一些辅助库来完成此任务的一个示例:
```python
from skimage import io
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
# 读取图片
img_path = "C:\\Users\\20220\\Desktop\\3.jpg"
img = io.imread(img_path)
# 获取原始图像尺寸
original_width, original_height = img.shape[:2]
# 定义新的尺寸(宽度和高度减半)
new_width = original_width // 2
new_height = original_height // 2
# 缩放图像并保持原始尺寸,使用PIL的thumbnail方法居中
resized_img = Image.fromarray(img).thumbnail((new_width, new_height), Image.ANTIALIAS)
# 将图片转换回numpy数组
resized_array = np.array(resized_img)
# 设置边界值为蓝色(假设RGB格式,如果其他格式需要相应调整)
blue_border = 255 * np.array([0, 0, 255])
# 找出新图像的边界位置
border_x = (new_width - original_width) // 2
border_y = (new_height - original_height) // 2
# 非图像部分置为蓝色
padding = ((border_x, border_x + original_width), (border_y, border_y + original_height), (0, 0))
resized_array[padding] = blue_border
# 显示图片
plt.imshow(resized_array)
plt.axis('off')
plt.show()
阅读全文