日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

N张图片合成一个最终图片(像素图片)

發布時間:2024/1/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 N张图片合成一个最终图片(像素图片) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發工具:

? ? ? ? Python 3.8,PyCharm

用到的所有源圖像(新建目錄,將圖片放進去):sourceimages

?最終需要的圖片(新建目錄examples,放進去最終需要的一張圖片):examples

源代碼(main.py):

import cv2 import glob import argparse import numpy as np from tqdm import tqdm # 進度條 from itertools import product # 迭代器def parseArgs():parser = argparse.ArgumentParser('拼接馬賽克圖片')parser.add_argument('--targetpath', type=str, default='examples/4.jpg', help='目標圖像路徑')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# 讀取所有原圖像,并計算對應顏色平均值 def readSourceImages(sourcepath,blocksize):print('開始讀取圖像')# 合法圖像列表sourceimages = []# 平均顏色列表avgcolors = []# 讀取所有圖片for path in tqdm(glob.glob("{}/*.jpg".format(sourcepath))):image = cv2.imread(path, cv2.IMREAD_COLOR)if image.shape[-1] != 3:continueimage = cv2.resize(image, (blocksize, blocksize))avgcolor = np.sum(np.sum(image, axis=0), axis=0) / (blocksize * blocksize)sourceimages.append(image)avgcolors.append(avgcolor)print('結束讀取')return sourceimages,np.array(avgcolors)# 主函數 def 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('制作完成')if __name__ == '__main__':main(parseArgs())

?版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/qq_46614154/article/details/106281833 ———————————————— 版權聲明:本文為CSDN博主「其實還好啦」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/qq_46614154/article/details/106281833

總結

以上是生活随笔為你收集整理的N张图片合成一个最终图片(像素图片)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。