日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

照片合成軟件 圖片合成在線生成器

目錄

  • 前言
  • 開發(fā)環(huán)境
  • 實現(xiàn)代碼
    • 先導(dǎo)入所需模塊
    • 讀取圖片文件
    • 讀取所有源圖片并計算對應(yīng)顏色的平均值
    • 合法圖像列表
    • 平均顏色列表
    • 遍歷
    • 主函數(shù)
    • 模塊調(diào)用執(zhí)行
  • 完整效果
前言最近有網(wǎng)友私信我,問如何把多張圖片合成一張馬賽克圖片的樣子
說是女兒從出生到現(xiàn)在,所有的照片,大概有上百張,所以想使用這些照片合成一張,當(dāng)做生日禮物
那我們今天就用上次爬表情包的圖片來做一次馬賽克圖片,2萬張合成一張,想想就很激動

照片合成軟件 圖片合成在線生成器


圖片素材

照片合成軟件 圖片合成在線生成器


4K高清原圖

照片合成軟件 圖片合成在線生成器


開發(fā)環(huán)境Python 3.6
Pycharm
實現(xiàn)代碼先導(dǎo)入所需模塊123456import cv2import globimport argparseimport numpy as npfrom tqdm import tqdm # 進(jìn)度條from itertools import product # 迭代器讀取圖片文件12345678910def parsArgs():parser = argparse.ArgumentParser(‘拼接馬賽克圖片’)parser.add_argument(‘–targetpath’, type=str, default=’examples/3.jpg’, help=’目標(biāo)圖像路徑’)parser.add_argument(‘–outputpath’, type=str, default=’output.jpg’, help=’輸出圖像的路徑’)parser.add_argument(‘–sourcepath’, type=str, default=’sourceimages’, help=’用來拼接圖像的所有源圖像文件路徑’)parser.add_argument(‘–blocksize’, type=int, default=15, help=’馬賽克快的大小’)args = parser.parse_args()return args讀取所有源圖片并計算對應(yīng)顏色平均值12def readSourceImages(sourcepath,blocksize):print(‘開始讀取圖像’)合法圖像列表設(shè)置一個列表,存放符合要求的顏色圖像
1sourceimages = []平均顏色列表1avgcolors = []遍歷每遍歷一次,進(jìn)度條走一次
123456789101112for path in tqdm(glob.glob(“{}/*.jpg”.format(sourcepath))):image = cv2.imread(path, cv2.IMREAD_COLOR)if image.shape[-1] != 3:continue# 縮放尺寸image = cv2.resize(image, (blocksize, blocksize))# 圖像顏色平均值avgcolor = np.sum(np.sum(image, axis=0), axis=0) / (blocksize * blocksize)sourceimages.append(image)avgcolors.append(avgcolor)print(‘結(jié)束讀取’)return sourceimages,np.array(avgcolors)主函數(shù)123456789101112131415def main(args):targetimage = cv2.imread(args.targetpath)outputimage = np.zeros(targetimage.shape,np.uint8) # int8 int16 int32 int64sourceimages,avgcolors = readSourceImages(args.sourcepath,args.blocksize)print(‘開始制作’)for i, j in tqdm(product(range(int(targetimage.shape[1]/args.blocksize)), range(int(targetimage.shape[0]/args.blocksize)))):block = targetimage[j * args.blocksize: (j + 1) * args.blocksize, i * args.blocksize: (i + 1) * args.blocksize,:]avgcolor = np.sum(np.sum(block, axis=0), axis=0) / (args.blocksize * args.blocksize)distances = np.linalg.norm(avgcolor – avgcolors, axis=1)idx = np.argmin(distances)outputimage[j * args.blocksize: (j + 1) * args.blocksize, i * args.blocksize: (i + 1) * args.blocksize, :] = sourceimages[idx]cv2.imwrite(args.outputpath, outputimage)cv2.imshow(‘result’, outputimage)print(‘制作完成’)模塊調(diào)用執(zhí)行123if __name__ == ‘__main__’:# runmain(parseArgs())完整效果
照片合成軟件 圖片合成在線生成器



照片合成軟件 圖片合成在線生成器



照片合成軟件 圖片合成在線生成器

推薦閱讀