多语言展示
当前在线:1642今日阅读:141今日分享:15

用python实现的图片变形以及插值方法

本文,介绍一下,用python实现的图片变形,还要介绍一下,图片变形之后,对图片像素进行插值的方法。原图如下。
工具/原料
1

电脑

2

python3.6(Anaconda)

3

opencv模块

方法/步骤
1

给出图片,并读取图片的形状:import cv2,numpy as npimg = cv2.imread('0.png')a,b,c = img.shape

2

对图片进行变形,把原图的{i,j}变为{3*i+j,i+2*j}。所以,需要求出新图片的大小:for i in range(a):    for j in range(b):        A.append(int(3*i+j))        B.append(int(i+2*j))d = max(A)e = max(B)

3

创建一个宽为e+1、高为d+1的绿色图片img0:img0 = np.zeros((d+1,e+1,3))img0[:,:] = [0,255,0]

4

用顺向插值的方法,把img的像素{i,j}放到img0的{3*i+j,i+2*j}上面:for i in range(a):    for j in range(b):        img0[int(3*i+j),int(i+2*j)]=img[i,j]

5

用逆向插值的方法,对img0的{i,j},用img的{(8*i-3*j)/5,(-4*i+9*j)/5}赋值:for i in range(d):    for j in range(e):        if (2*i-j)/5=0 and (3*j-i)/5=0:            img0[i,j]=img[int((2*i-j)/5),int((3*j-i)/5)]