一、技术来源:
插值算法 | 最近邻插值法_哔哩哔哩_bilibili
感谢这位的技术分享,讲解得通俗易懂
二、一些磕磕绊绊:
1.首先,pycharm的使用,通过file创建一个新的项目(最好可以记住文件路径),然后就可以直接在main.py中写代码了
2.然后,常常需要处理 各种“库”的问题,可以在下面找到对应的地方,也可以file-settings-projuct-interpreter中点那个“+”加号进行install
3.有时候pycharm会标注一些红线,先别管它,比如,我这里的numpy它一直标红,
4.关于error怎么处理?先chatGPT,然后csdn解决
三、最邻近插值法的思想(那个视频的笔记浓缩版本)
1.主要思想:
需要图像放大后(无论怎样一定是“数字”也就是整数对象),在缩小为等比例,每个小格子对应找到原来的9个格子中的一个,然后作为小格子中的数值
2.代码:
注意,首先,我在pycharm-project2文件夹里面放入了一张test1.jpg
最终也在那里生成了一张放大1.5倍的test.jpg图片
import numpy as np
from PIL import Image
def nearest_neighbor_interpolation(image,scale_factor):
height,width = image.shape[:2] #读取图像的长宽
out_height = int(height*scale_factor)
out_width = int(width*scale_factor)
output_image = np.zeros((out_height,out_width,3),dtype = np.uint8)
for out_y in range(out_height):
for out_x in range(out_width):
input_x = int(round(out_x/scale_factor))
input_y = int(round(out_y/scale_factor))
input_x = min(input_x,width-1)
input_y = min(input_y,height-1)
output_image[out_y,out_x] = image[input_y,input_x]
return output_image
#读取原始图像:
input_image = Image.open('test.jpg')
image_array = np.array(input_image)
#输出缩放后的图像:
output_array = nearest_neighbor_interpolation(image_array,1.5)
output_image = Image.fromarray(output_array)
output_image.save('test2.jpg')
3.效果就不看了,那个图片是我女神
确实是模糊了一点,不过看不出来
4.必须用这个最邻近插值法的场景:
语义分割后的放大缩小