【教学类-50-14】20240505“数一数”图片样式12:数一数(12个“人物”图案)

作品展示

背景需求:

前文做了“”材料”图片的数一数学具,效果不错,

https://blog.csdn.net/reasonsummer/article/details/138466325icon-default.png?t=N7T8https://blog.csdn.net/reasonsummer/article/details/138466325

为了让图案内容更丰富,我又选了孩子们“春游活动(学军活动计划书)”上的人物图案——军人叔叔站军姿、吊杠训练、射击训练等动作

一、素材准备

选一些特征明显人物图片,进行特写拍照

放到Photoshop里面修图,做成黑白简笔画(517*517像素)

素材位置

代码与“材料”相同,也是生成5个等级(0,5-0.1)

'''
04数一数图片(人物图片)边框内+图形不相接 
作者:AI对话大师、阿夏
时间:2024年4月28日 20:00
'''

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import os
import random
import time
from shapely.geometry import Polygon

# 输入画布大小和要生成的图片数量
canvas_size =15
# int(input('请输入画布大小:15\n'))
num =int(input('请输入要生成的图片数量:100次\n'))# 提取的数量,尽量多一点刷100可能也只有8个图案
f=int(input('几份:2\n'))

# 创建目录
output_dir = r'C:\Users\jg2yXRZ\OneDrive\桌面\数一数2\04自制框内不连接'
os.makedirs(output_dir, exist_ok=True)
# 统计每张图片出现的次数
image_count = {}
z='人物'

    
pic_dir = fr'C:\Users\jg2yXRZ\OneDrive\桌面\数一数2\00幼儿图片\{z}'

# 创建目录    

end=output_dir+fr'\{pic_dir[-2:]}'
os.makedirs(end, exist_ok=True)    

# 获取文件夹中的所有文件
file_list = os.listdir(pic_dir)

# 过滤出图片文件
image_files = [file for file in file_list if file.endswith('.png') or file.endswith('.jpg') or file.endswith('.jpeg')]

# 构建图片文件的完整路径
# # 自制图片路径
animal_paths = [os.path.join(pic_dir, file) for file in image_files]
print(len(animal_paths))

# 0.1缩放比例的范围,从0.1-0.6,01-01生成图案最多,0,1-0,5因为有大图占满了,所以小图数量会很少
fw=[]
# 倒过来的数字,数字越大图案大,数量少,难度越低
for y in range(5,0,-1):
    fw.append(f'0.{y}')
print(fw)
# 提取的数量,尽量多一点刷100可能也只有8个图案


nn=1
# 几份?
for ff in fw:    # 0.1-0.1
    print(f'0.1-{ff}')
    for ii in range(f):        # 生成2份
        print(f'第{ii+1}份')
        # 图形尺寸范围    
        size_range = (0.1, float(ff)) # 图片尺寸范围(相对于画布大小的比例)

        # 创建画布
        fig, ax = plt.subplots(figsize=(canvas_size, canvas_size))
        ax.set_xlim([0, canvas_size])
        ax.set_ylim([0, canvas_size])

        shapes = [] # 存储已生成的图形

        # 随机生成指定数量的动物图片
        # for ii in range(num):r
        tencent_dir = output_dir+r'\零时'
        os.makedirs(tencent_dir, exist_ok=True)

                    # 统计每张图片出现的次数
        image_count = {}

        for i in range(num): # 随机抽取6张
        # 随机选择动物图片
            animal_path = random.choice(animal_paths)
            img = mpimg.imread(animal_path)
            img_height, img_width = img.shape[:2]

            # 随机确定图片的大小和位置
            size = random.uniform(size_range[0], size_range[1]) * canvas_size
            position_x = random.uniform(0, canvas_size - size)
            position_y = random.uniform(0, canvas_size - size)

            # 检查图片是否与其他图片不相交
            shape = Polygon([(position_x, position_y),
            (position_x + size, position_y),
            (position_x + size, position_y + size),
            (position_x, position_y + size)])

            if not any(shape.intersects(s) for s in shapes):
            # 添加图片到画布
                ax.imshow(img, extent=[position_x, position_x + size, position_y, position_y + size])
                shapes.append(shape)

                        # 统计图片出现的次数
                if animal_path in image_count:
                    image_count[animal_path] += 1
                else:
                    image_count[animal_path] = 1 
                        

            # 隐藏坐标轴
            ax.axis('off')

                        # 打印每张图片出现的次数
            print("图片统计:")
            for image_path, count in image_count.items():
                print(f"{image_path}: {count}")

        # 保存图形
        output_path = os.path.join(tencent_dir, f'{ii:02d}.png')
        plt.savefig(output_path, dpi=200, bbox_inches='tight')
        # import time
        # time.sleep(2)


        shapes.clear()
        # 暂停3秒
        time.sleep(1)

        import os
        import shutil


        # 获取123文件夹中的所有文件
        files = os.listdir(tencent_dir)
        
        # 遍历文件夹中的文件
        source_file_path = ""
        target_file_path = ""
        for file in files:
        # 构建源文件路径和目标文件路径
            source_file_path = os.path.join(tencent_dir, file)
            file=f'{nn:02d}.png'
            target_file_path = os.path.join(end, file)
        nn+=1
        # 剪切文件到目标文件夹
        shutil.move(source_file_path, target_file_path)

        
        # 清空画布和图形列表
        ax.cla()
        shapes.clear()


        # 关闭画布
        plt.close(fig)

# # 删除文件夹
import shutil
shutil.rmtree(tencent_dir)

 生成的数一数图片的保存位置(在代码里新建文件夹)

操作过程:

作品展示:

分析:

人物点数卡,有5位孩子选择,因为人物外形近似,加上还有图形为“0”的可能性,所以有一定错误率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/599698.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Dash库:一个Web应用只需几行代码

大家好,在数据科学领域,数据可视化是将数据以图形化形式展示出来,帮助我们更直观地理解数据。Python中有一个非常流行的数据可视化库叫做Dash,Dash以其简洁、高效和强大的功能而闻名,它允许开发者快速构建交互式Web应用…

【智能算法】人类进化优化算法(HEOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,J Lian受到人类进化启发,提出了人类进化优化算法(Human Evolutionary Optimization Algorithm, HEOA)。 2.算法原理 2.1算法思想 …

JavaWEB 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型,可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入(Dependency Injection)、面向切面编程(Aspect-Or…

Springboot项目学习之各组件的用法和逻辑结构

1.Controller层(Controller): 也称为前端控制器或请求处理器,它是项目与用户交互的入口。Controller接收HTTP请求,解析请求参数,调用Service层处理业务逻辑,并返回响应给客户端。 Controller通…

IP证书能免费申请吗

IP SSL证书是一种数字证书,用于保护网络服务器和网络浏览器之间的通信。该证书是一种主要保护公网IP地址的专属信任SSL证书。 IP类型的SSL证书对于直接用IP地址传输数据的技术人员来说,十分重要!无论是防洪还是防劫持还是数据加密都起到了关…

【C 数据结构-动态内存管理】4. 无用单元收集(垃圾回收机制)

文章目录 【 1. 问题描述与解决方法 】【 2. 中断回收机制 】 【 1. 问题描述与解决方法 】 问题描述 动态存储管理的运行机制可以概括为:当用户发出申请空间的请求后,系统向用户分配内存;用户运行结束释放存储空间后,系统回收内…

【FL常用插件#1】Ozone11臭氧的安装和使用

本文内容收集自互联网,仅供个人学习参考使用,不允许用于商业用途,造成的侵权行为与本文作者无关 安装 VST2、VST3、AAX和NKS是音频技术界常见的几种插件格式,它们在功能和兼容性上有所不同: VST2 (Virtual Studio Tec…

用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计 规整项目目录1. 数据库自动生成器的使用实现基本的数据库操作(操作user表) 2. 注册逻辑的设计(1) 写注册逻辑(2) 实现(3) 测试代码 3. 遇到的问题 规整项目目录 utils–存放工具类,比如加密…

关系型数据库MySQL开发要点之多表设计案例详解代码实现

什么是多表设计 项目开发中 在进行数据库表结构设计时 根据数据模型和业务关系 会根据业务需求和业务模块之间的关系分析设计表结构 由于业务之间互相关联 所以表结构之间也存在着各种联系 主要分为以下三种 一对多 每个部门下是有多个员工的 但是一个员工只能归属一个部…

京东JD商品详情API返回值揭秘:精准掌握商品信息

在当今电子商务繁荣的时代,对于电商平台来说,提供准确、详尽的商品信息对于满足用户需求、提升购物体验至关重要。京东作为中国领先的电商平台,通过其开放的API接口,为开发者提供了获取商品详情的强大工具。本文将深入探讨京东JD商…

FastDFS-单机扩容

描述 周一上班收到用户反馈系统异常,紧急排查日志发现报错:FdfsServerException:错误:28,错误信息:没有足够的存储空间。 解决 根据异常信息判断是文件服务器可用内存不够了,首先登录文件服务器,使用df -h命令查看一…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员掌握地下水数值模拟软件GMS的全过程实际操作技术的基本技能,而且可以深刻理解模拟过程中的关键环节,以解决实际问题能力。同时为满足环评从业人员进一步加强地下水数值模…

AF594-标记羊抗鼠免疫球蛋白(H+L),山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上,然后再偶联以小化交叉反应性

试剂介绍: AF594-标记羊抗鼠免疫球蛋白(HL)是荧光标记二抗,我们的山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上,然后再偶联以小化交叉反应性。 这种AF594标记的山羊抗小鼠IgG缀合物通过交叉吸附的山羊抗小鼠IgG全抗体与AF594 NHS酯…

应用层协议——HTTP协议

1. 认识HTTP协议 HTTP(Hyper Text Transfer Protocol)协议又叫做超文本传输协议,是一个简单的请求-响应协议,HTTP通常运行在TCP之上。 超文本的意思就是超越普通的文本,http允许传送文字,图片&#xff0c…

深入理解nginx http响应限速功能

目录 1. 引言2. 配置参数2.1 limit_rate 配置指令2.2 limit_rate_after 配置指令2.3 其他限速配置 3. 源码分析 1. 引言 在现代互联网应用中,服务器的性能和响应速度是至关重要的。为了保证服务器的稳定性和可靠性,限制客户端对服务器的访问速度是一项重…

Web实操(6),基础知识学习(24~)

1.[ZJCTF 2019]NiZhuanSiWei1 (1)进入环境后看到一篇php代码,开始我简单的以为是一题常规的php伪协议,多次试错后发现它并没有那么简单,它包含了基础的文件包含,伪协议还有反序列化 (2&#x…

【数据结构】顺序表与ArrayList

一、什么是顺序表 概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 如下图: 优点:访问速度比较快,在给定下标的情况下时间复杂度低至O(…

网络1--通信过程的理解

1.封装与解包 通信的过程就是不断的封装和解包的过程 封装即就是按照“应用”“传输” “网络” “链路” 层,封装给每一层都加上相应的包头(每一层都有协议,)解包就是接受到的包文被一层层去掉相对应的包头。 任何一层的协议都…

ATFX汇市:日本央行或3万亿干预,日元升值势头显著

​ATFX汇市:4月29日,USDJPY创出历史新高160.21,随后进入快速回落阶段。五个交易日,最低价触及151.86点,相比最高价暴跌835基点,约5.21%。同期的美元指数跌幅仅为0.96%,两者跌幅严重不匹配&#…

【intro】图卷积神经网络(GCN)-续

本文为【intro】图卷积神经网络(GCN)-CSDN博客后续(因为经验告诉我超过2w字编辑器就会卡……) 第一部分还是进一步再看看GCN 图卷积神经网络GCN_哔哩哔哩_bilibili 回顾 图神经网络的基本原理就是把图中的节点编码映射成一个低…