Python如何实现多张图片合成一张马赛克图片
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Python如何实现多张图片合成一张马赛克图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片素材4K高清原图开发环境Python 3
千家信息网最后更新 2026年11月03日Python如何实现多张图片合成一张马赛克图片
这篇文章将为大家详细讲解有关Python如何实现多张图片合成一张马赛克图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
图片素材

4K高清原图

开发环境
Python 3.6
Pycharm
实现代码
先导入所需模块
import cv2import globimport argparseimport numpy as npfrom tqdm import tqdm # 进度条from itertools import product # 迭代器
读取图片文件
def parsArgs(): parser = argparse.ArgumentParser('拼接马赛克图片') parser.add_argument('--targetpath', type=str, default='examples/3.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: 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('结束读取')return sourceimages,np.array(avgcolors)主函数
def main(args): targetimage = cv2.imread(args.targetpath) outputimage = np.zeros(targetimage.shape,np.uint8) # int8 int16 int32 int64 sourceimages,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__': # run main(parseArgs())
完整效果
关于"Python如何实现多张图片合成一张马赛克图片"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
图片
图像
马赛克
马赛
颜色
篇文章
路径
多张
平均值
文件
更多
模块
进度
制作
不错
合法
实用
代码
内容
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
互联网科技图片
湖南永感互联网科技有限公司
互联网电商科技
河南真二互联网科技有限公司
互联网与科技金融数据
互联网金融 科技金融
奇酷互联网科技
科技创新互联网企业
顺玮阁互联网科技
润盈互联网科技
互联网科技网站
撒么互联网科技公司
彤创互联网科技有限公司
搜狐科技互联网
小米互联网科技园入驻
产业互联网科技服务公司
广州梦谷互联网科技有限公司领导
保山浩联互联网科技有限公司
恒生科技互联网指数十大成分股
科技互联网
互联网科技巨头监管
互联网与科技发展
剑昆互联网络科技有限公司临桂
顶级互联网科技成果有哪些
速维有品互联网信息科技(苏州)有限公司
产业互联网科技服务公司
张召忠谈中国互联网科技
萌小萌互联网科技河南有限公司
福建互联网展示科技馆设计