网络知识 娱乐 十多行代码生成原帖和临写对照图

十多行代码生成原帖和临写对照图

介绍

这个小工具把原帖和临写分解成多列对照的形式。

输入原帖图片,

十多行代码生成原帖和临写对照图

和输入临写图片,

十多行代码生成原帖和临写对照图

生成对照图片。

十多行代码生成原帖和临写对照图


使用说明

运行compare.py文件,输入参数为:原帖图片文件名,临写图片文件名,列数。

python3 compare.py <model.jpg> <copied.jpg> <colnum>

原代码

好吧,严格点,应该说核心代码就第13行到23行十来行代码。

from skimage import ionfrom skimage import transformnfrom skimage.color import rgb2graynnimport numpy as npnnimport matplotlib.pyplot as pltnnimport sysnimport os.pathnndef main(modelname, copiedname, colnum):n copied = io.imread(copiedname)n copied = rgb2gray(copied) * 255n model = io.imread(modelname)n model = rgb2gray(model)n model = transform.resize(model, copied.shape) * 255nn r = np.zeros((copied.shape[0], copied.shape[1]*2), np.uint8)n width = copied.shape[1] // colnumn for i in range(colnum):n r[:, 2*i*width:(2*i+1)*width] = model[:, i*width:(i+1)*width]n r[:, (2*i+1)*width:(2*i+2)*width] = copied[:, i*width:(i+1)*width]n n name, ext = os.path.splitext(copiedname)n name += "_cmp.jpg"n io.imsave(name, r)n #name = os.path.join(os.path.dirname(copiedname), "comparison.jpg")nn plt.figure()n plt.imshow(r, cmap=plt.cm.gray)n plt.show()nnif __name__ == "__main__":n if len(sys.argv) == 4:n modelname = sys.argv[1]n copiedname = sys.argv[2]n colnum = int(sys.argv[3])n else:n print("usage: python3 compare.py <model.jpg> <copied.jpg> <colnum>")n sys.exit()n n main(modelname, copiedname, colnum)n