开发工具:

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张图片合成一个最终图片(像素图片)相关推荐

  1. java,png,jpg,多张图片合成一个pdf,压缩图片,并且保证图片不失帧。

    如何把图片合并成一个pdf,并且压缩图片大小至200以下,并且图片不失帧. /*** 合并图片转成pdf** @param inputImgUrls* @param outputFileName* @ ...

  2. 好几张图片合成一个PDF,不能错过的小技巧!

    图片可以说是我们日常生活中就经常接触的文件啦,我们只要拥有摄像设备,在很多不同场景下都可以实现拍照自由.可是随着我们的图片文件的增多,我们会更多使用一些方法来更好保存这些比较珍贵的图像.比较常用的有把 ...

  3. javaCV学习-1-环境搭建及测试多张图片合成一个mp4的视频

    最近在自学用java语言如何进行处理音视频. 学习时,在网上找了一段代码,测试多张图片合成一个mp4的视频. 代码是: import org.bytedeco.ffmpeg.global.avcode ...

  4. python图片合成视频_把几张图片合成一个视频,有什么软件是免费的?

    看到这个问题我第一个想到的就是自己在用的"万兴喵影"剪辑软件. 用了挺久的,所以对于里面的功能还是很清楚的. 接下来我就分布列出来给你们康康~ 第一步:导入图片 你可以单击&quo ...

  5. jpg转换成PDF 如何将多张图片合成一个PDF文件

    一般扫描一些文档资料之后形成的图片会放在同一个文件夹中,但是有时为了便于查看和管理这些图片,就会将图片合成一个文档,这样查看内容的时候会比较方便,一般也都是将图片转换成PDF文件. 把图片转换成PDF ...

  6. 多张图片合成一个PDF

    把多张图片放到一个文件夹中,Ctrl+A全选,右键-打印,然后可以在"选项"中选择横向或者纵向,打印机选择"MIcrosoft to PDF",打印即可

  7. 如何查看文件夹里有几张图片_如何把几张图片合成一个pdf?图片合并为pdf的操作教程...

    我在一家公司当美工,平时要接触到很多图片素材,并把它们以pdf格式文件的形式发送给客户查看(以此来摸索出客户想要的图片效果).把几张图片合并成为一个pdf文件,即是将图片格式转换成为pdf格式,这对我 ...

  8. 安卓实现多张图片合成或拼接及在图片上添加文字

    这是两张图片,底图+二维码 ,"长按识别二维码"是后添加上去的. 至于为什么不直接放一张带二维码的图片呢,这是公司业务需求,下面来说说怎么实现的(二维码后台返回的是一张正方形图片, ...

  9. java多张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程

    感谢(P大点S / 墨鱼排骨汤)的分享! 效果图: 素材打包:http://www.16xx8.com/photoshop/sucai/2017/b208458.html 首先创建画布. 置入图片. ...

最新文章

  1. SRM 563 Div1 500 SpellCards
  2. Python中单个下划线“ _”变量的用途是什么?
  3. Git 之fatal: remote origin already exists 错误解决办法(通俗易懂)
  4. PHP常用正则:手机 邮箱 网址
  5. BT,eMule,迅雷下载的电影没有字幕的解决方法
  6. Ubuntu19.04安装mysql8.0版本(亲测OK)
  7. 从对我的质疑说起,谈谈Linux下的文件删除
  8. rocketmq 消息指定_进大厂必备的RocketMQ你会吗?
  9. 除了“团队牛”还有“饭菜香”,百度 IDL 招聘算法实习生
  10. 【Linux】CentOS 7 安装Redis
  11. 灵活就业协议影响应届身份吗,档案应该如何处理
  12. threejs添加天空盒
  13. 雷电模拟器安装xposed框架
  14. 让你一目了然的商业计划书
  15. 代码资源之中国天气网城市代码
  16. Java总结IO篇之字符流
  17. 11b、11a/g、11n和11ac速率
  18. 百度收录排名好的网站-哪些网站百度收录排名好
  19. PHP打印对象 用[]可以 用.不可以 不知所以然
  20. ARM9的存储结构~~大端存储和小端存储

热门文章

  1. NLog NETCore 3.0 Porting
  2. FJUT 1735 开宝箱
  3. 搭建智能语音交互系统重要点那些
  4. 国际结算银行:嵌入式监管可大幅简化合规监管
  5. 网易被裁后,68天吃透这份阿里学长甩我的Android面试笔记,竟让我收到字节跳动和小米offer
  6. python爬取丁香园的疫情数据绘制Echarts地图
  7. C. DZY Loves Fibonacci Numbers(线段树fibonacci)
  8. 钢琴家软件里曲谱的数据为什么更新不了_王者荣耀安卓与IOS互通?IOS恐怕得到不少利益,不然这事成不了...
  9. 科技战疫志愿精神如何延续?腾讯的答案是……
  10. 《物流与供应链管理》读书笔记