手动扩充图像

遇到的问题:手里有一个512*512的图像,我想把它变大一点。
最容易想到的方法是插值,如:最邻近插值、线性插值等。。。(之前均实现过)
下面来一种简单粗暴,不太需要算法的算法。
函数功能:将输进去的图片扩充为原来的两倍。

import numpy as np
import math
import matplotlib.pyplot as plt
import matplotlib.image as mp

#扩充图片成其两倍
def larger2(data,width):
    newdata = np.zeros((2*width,2*width),dtype=np.uint8)
    #将原来的像素点均匀的拉开分散到newdata中
    for i in range(width):
        for j in range(width):
            newdata[2*i][2*j] = data[i][j]
    #横向填充,左右像素取平均
    for i in range(width):
        for j in range(width-1):
            a, b = np.int32(data[i][j]), np.int32(data[i][j+1])  #否则是256进制
            newdata[2*i][2*j+1] = math.floor((a+b)//2)

    #纵向填充,上下像素取平均
    for i in range(width-1):
        for j in range(2*width-1):
            a, b = np.int32(newdata[2*i][j]), np.int32(newdata[2*i+2][j])
            newdata[2*i+1][j] = math.floor((a+b)//2)

    newdata.tofile("lenna1024.raw")
    plt.imshow(newdata, cmap='gray')
    plt.show()


data = np.fromfile(r'D:lenna512.raw', dtype=np.uint8)  # car:(338,600);lenna:(512,512)
data = np.array(data, dtype=np.uint8)
data = data.reshape(512, 512)
larger2(data,512)

原图:
在这里插入图片描述
变大后的图:
在这里插入图片描述
tips:主要看图片上面的尺寸哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值