话不多说,上代码
import cv2
import math
import numpy as np
image = cv2.imread('EPAN_1.png')
# 获取高、宽
cols = image.shape[1]
rows = image.shape[0]
output = np.zeros(image.shape,dtype = image.dtype)
# 凸形
for i in range(rows):
for j in range(cols):
offset_x = int(10*math.sin(2*math.pi*i/(2*cols)))
offset_y = 0
if j+offset_x < cols:
output[i,j] = image[i,(j+offset_x)%cols]
else:
output[i,j] = 255
cv2.imwrite('EPAN_2.png', output)
扭曲前
扭曲后