【教学类-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.1print(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):rtencent_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_sizeposition_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] += 1else: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 osimport 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.hqwc.cn/news/675314.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信创 | 信创产业数字化转型与升级:路径规划与实践!

信创产业的数字化转型与升级路径,主要围绕着构建国产化信息技术软硬件底层架构体系和全周期生态体系,解决核心技术关键环节“卡脖子”的问题,以推动中国经济数字化转型的平稳健康发展。 一、信创产业的发展趋势包括: 加强国产信息…

算法提高之能量项链

算法提高之能量项链 核心思想&#xff1a;区间dp 通过观察发现可以将n个珠子最后的n1个数看作石子 合并石子 在l~r的范围内 找k作隔断 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 110,M N<<…

Java 线程池 ( Thread Pool )的简单介绍

想象一下&#xff0c;你正指挥着一支超级英雄团队&#xff0c;面对蜂拥而至的敌人&#xff08;任务&#xff09;&#xff0c;不是每次都召唤新英雄&#xff08;创建线程&#xff09;&#xff0c;而是精心调配现有成员&#xff0c;高效应对。这就是Java线程池的魔力&#xff0c;…

Python运维-日志记录、FTP、邮件提醒

本章目录如下&#xff1a; 五、日志记录 5.1、日志模块简介 5.2、logging模块的配置与使用 六、搭建FTP服务器与客户端 6.1、FTP服务器模式 6.2、搭建服务器 6.3、编写FTP客户端程序 七、邮件提醒 7.1、发送邮件 7.2、接收邮件 7.3、实例&#xff1a;将报警信息实时…

[1726]java试飞任务规划管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java试飞任务规划管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

【C++泛型编程】(二)标准模板库 STL

文章目录 标准模板库 STL容器算法迭代器仿函数/函数对象适配器分配器示例 标准模板库 STL C 的标准模板库&#xff08;Standard Template Library&#xff0c;STL&#xff09;旨在通过模板化的设计&#xff0c;提供一种通用的编程模式&#xff0c;使程序员能方便地实现和扩展各…

基于FPGA的累加器及数码管显示VHDL代码Quartus仿真

名称&#xff1a;基于FPGA的累加器及数码管显示VHDL代码Quartus仿真&#xff08;文末获取&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 累加器及数码管显示 1、可以通过按键输入1~9 2、数字输入后进行累加&#xff0c;将累加结果显示…

一文读懂Python的`__init__`,`__init__`方法的终极指南

大家好&#xff0c;今天给大家介绍一个Python中一个特殊的函数__init__。 在Python中&#xff0c;__init__方法是一个特殊的函数&#xff0c;它在创建类的新实例时自动调用。它的作用类似于其他编程语言中的构造函数&#xff0c;用于初始化对象的状态。这篇文章将带你深入了解…

经常发文章的你是否想过定时发布是咋实现的?

前言 可乐他们团队最近在做一个文章社区平台,由于人手不够,前后端都是由前端同学来写。后端使用 nest 来实现。 某一天周五下午,可乐正在快乐摸鱼,想到周末即将来临,十分开心。然而,产品突然找到了他,说道:可乐,我们要做一个文章定时发布功能。 现在我先为你解释一…

鸿蒙开发接口Ability框架:【@ohos.application.missionManager (missionManager)】

missionManager missionManager模块提供系统任务管理能力&#xff0c;包括对系统任务执行锁定、解锁、清理、切换到前台等操作。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 impo…

windows 双网卡同时接入内外网

在公司使用wifi接入使用桌面云&#xff0c;但是公司wifi不能上外网&#xff0c;查资料不方便&#xff0c;通过手机同时接入外网。 同一台电脑设置同时连接内外网&#xff08;wifi或共享的网络&#xff09;_win7电脑同时使用手机和usb网卡使用wifi-CSDN博客 route print查看当前…

1天搞定SpringBoot+Vue全栈开发 (8)前端路由VueRouter(进行组件切换)

1.VueRouter安装与使用 2.参数传递 创建路由组件 在项目中定义Discover.vue、Friends.vue、My.vue三个组件&#xff0c;将来要使用vue-router来控制它们的展示与切换&#xff1a; Discover.vue <template><div><h1>发现音乐</h1></div> <…