快捷搜索:  朋友圈  as  伪静态  次数  响应式  虎牙  浏览数  anniu

将几万张图片合成一张图片,制作一个超赞的马赛克图

需求说明制作一个马赛克图片将几万张图片进行合成每个马赛克格子的尺寸为15x15。

file

完整源码在文末有说明需要的可以去下载哈。

【阅读全文】 看一下生成的马赛克图片的效果

file

需要使用到的python模块包如下

import cv2  # pip install opencv-python # 图像处理库import glob  # 导入文件处理库import argparse  # 命令行解析库import numpy as np  # 数据处理库from tqdm import tqdm  # 导入进度条库from itertools import product  # 导入迭代器库import logging  # 导入日志库

设置logging模块日志打印。

logging.basicConfig(levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s)logger  logging.getLogger(图片合成器)logger.setLevel(logging.DEBUG)

编写函数read_source_images()提取符合图像颜色要求的图片对象并计算平均值。

def read_source_images(source_images_path, block_size):        提取符合图像颜色要求的图片对象并计算平均值    :param source_images_path: 源图片路径    :param block_size: 每个图片的尺寸    :return: 符合要求的图片对象数组、颜色平均值数组        logger.info(开始源图片筛选及颜色平均值计算处理)    source_images  []  # 初始化源图像列表    avg_colors  []  # 平均颜色列表    使用进度条进行遍历源图片的文件夹    for image_path in tqdm(glob.glob({}/*.jpg.format(source_images_path))):        try:  # 此处加入异常处理若出现处理异常的图片则跳过该图片处理            # 读取彩色图片            img_obj  cv2.imread(image_path, cv2.IMREAD_COLOR)                        img_obj.shape[-1]读取图像的通道数通道值为3表示每个像素点的颜色取值范围0-255,0-255,0-255。            将通道值不等于3的图片跳过。                        if img_obj.shape[-1] ! 3:                continue            # 重新设置图片的尺寸            img_obj  cv2.resize(img_obj, (block_size, block_size))            # 计算该图像颜色的平均值            avg_color  np.sum(np.sum(img_obj, axis0), axis0) / (block_size * block_size)            # 将符合要求的图像对象添加到数组中            source_images.append(img_obj)            # 将符合要求的图像颜色平均值添加到数组中            avg_colors.append(avg_color)        except:            logger.error(异常图片路径  image_path)    logger.info(结束源图片筛选及颜色平均值计算处理)    return source_images, np.array(avg_colors)

编写parse_args()函数用于解析文件相关的参数。之后需要获取参数时直接从参数解析器中提取使用即可。

您可能还会对下面的文章感兴趣: