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

news2024/11/27 22:33:57

作品展示

背景需求:

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

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”的可能性,所以有一定错误率

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录

摘要: 2024-05-07 商业分析-如何成为一个靠谱的工具人 如何在社会层面做一个更好的工具人 那么今天讲的这个主题呢,对吧?你们一看啊,就觉得这个就不应该我讲是吧啊,但是呢这个逻辑呢我还得跟你们讲一下啊,就是如何成为…

java面向对象实现文字格斗游戏

面向对象编程(Object-Oriented Programming, OOP)是一种程序设计思想,它利用“对象”来封装状态和行为,使得代码更易于维护和扩展。 下面我们使用java中的面向对象编程,来实现一个文字格斗的游戏联系! 实…

Day21 代码随想录打卡|字符串篇---右旋转字符串

题目(卡码网 T55): 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转…

京东生产环境十万并发秒杀系统三高架构

文章目录 三高——高并发、高可用、高可扩展用数据库乐观锁解决超卖阿里巴巴:为了提升数据库性能,对数据库的源码级别做了改造——在DB内部实现内存队列,一次性接收很多的请求,一次性更新。京东:redis,mq&a…

微软开发新模型;YouTube 推出新AI功能;可折叠iPhone 或发布?

微软或开发新模型与 Google、OpenAI 竞争 The Information 报道,微软正在训练一种新的 AI 大模型「MAI-1」,规模上足以与 Google、Anthropic 乃至 OpenAI 的先进模型抗衡。 据报道,这个 MAI-1 模型由微软聘请的 Inflection 前 CEO Mustafa S…

【Linux】Linux线程

一、Linux线程的概念 1.什么是线程 1.一个进程的一个执行线路叫做线程,线程的一个进程内部的控制序列。 2.一个进程至少有一个执行线程 3.线程在进程内部,本质是在进程地址空间内运行 4.操作系统将进程虚拟地址空间的资源分配给每个执行流&#xff0…

每日OJ题_DFS解决FloodFill⑤_力扣417. 太平洋大西洋水流问题

目录 力扣417. 太平洋大西洋水流问题 解析代码 力扣417. 太平洋大西洋水流问题 417. 太平洋大西洋水流问题 难度 中等 有一个 m n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下…

题目----力扣--移除链表元素

题目 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2: 输入&…

2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.17,华为机试

2024年4月17日华为春招实习试题【三题】-题目题解在线评测 🔮题目一描述:扑克牌消消乐输入描述输出描述样例一样例二Limitation解题思路一:模拟,遇到连续3张相同牌号的卡牌,直接删除解题思路二:栈解题思路三…

【备战软考(嵌入式系统设计师)】08 - 多媒体技术信息安全

多媒体技术 这内容比较杂,而且跟咱嵌入式的关系不大,但是软考里会考一些,下面我就结合我已经刷过的一千多道往年真题概括总结一下常考的知识点。 媒体分类 首先媒体分为五类: 感觉媒体,让人直接感觉得到的媒体&…

热敏电阻怎么进行性能测试?并以LabVIEW为例进行说明

过程也可用于执行热敏电阻测量。RTD和热敏电阻遵循非常相似的功能原理,测量步骤与下面提供的步骤相同。有关热敏电阻的更多信息,请参阅本文档。 查找设备引脚排列 在连接任何信号之前,请找到您的设备引脚排列。 打开NI MAX并展开设备和接口。…

【Java笔记】多线程:一些有关中断的理解

文章目录 线程中断的作用线程的等待状态WAITINGTIMED_WAITING 线程从等待中恢复 java.lang.Thread中断实现相关方法中断标识interrupted 一些小练习Thread.interrupt() 只唤醒线程并修改中断标识sleep() 清除中断状态标识 Reference 线程中断的作用 线程中断可以使一个线程从等…

关于2024年上半年软考考试批次安排的通告

按照《2024年计算机技术与软件专业技术资格(水平)考试工作安排及有关事项的通知》(计考办〔2024〕1号)文件精神,结合各地机位实际,现将2024年上半年计算机软件资格考试有关安排通告如下: 一、考…

鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多,比如中断控制器,中断源,中断向量,中断共享,中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.用海公公打比方说明白中断各个概念…

GORM 与 MySQL(一)

GORM 操作 Mysql 数据库(一) 温馨提示:以下关于 GORM 的使用,是基于 Gin 框架的基础上,如果之前没有了解过 Gin 可能略微困难。 GORM 介绍 GORM 是 Golang 的一个 orm 框架。简单说,ORM 就是通过实例对象…

京东工业优选商品详情API接口:解锁高效工业采购新体验

京东工业优选的商品详情API接口,允许开发者通过程序化的方式,快速获取平台上的商品详细信息。这些详细信息包括但不限于商品名称、价格、规格、库存、图片、评价等,为企业提供全方位的商品信息查询服务。 二、API接口的主要功能 实时查询&a…

如何查看慢查询

4.2 如何查看慢查询 知道了以上内容之后,那么咱们如何去查看慢查询日志列表呢: slowlog len:查询慢查询日志长度slowlog get [n]:读取n条慢查询日志slowlog reset:清空慢查询列表 5、服务器端优化-命令及安全配置 安…

DDR4 新功能介绍

DDR4(第四代双倍数据率同步动态随机存取内存)相较于其前代DDR3,引入了一些新的功能和改进,这些新功能有助于提高内存的性能、降低功耗以及增强系统的可靠性,包括VPP、DBI(Data Bus Inversion,数据总线翻转)和DMI(与LPDDR4相关)。以下是对这些功能的简要说明: 更高的…

Stable Diffusion:AI绘画的新纪元

摘要: Stable Diffusion(SD)作为AI绘画领域的新星,以其开源免费、强大的生成能力和高度的自定义性,正在引领一场艺术与技术的革命。本文旨在为读者提供Stable Diffusion的全面介绍,包括其原理、核心组件、安…

嵌入式学习——C语言基础——day15

1. 段错误调试 1.1 打印法 在可能出现错误的位置加入打印,前一句能够打印出来,后一句打印不出来,问题就可以定位到两次打印中间的代码 1.2 gbd调试法 1. 编译代码时加入-g选项 gcc filename.c -g 2. 使用gdb调试生成的代码 gdb a.out 3. gdb调试命令 l 查看…