【教学类-59-】专注力视觉训练01(圆点百数图)
背景需求:
视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线,锻炼他们的视觉敏感度。 🔹在空白处填写数字,可根据线条的方向按顺序填写。 💡注意事项:引导宝宝一步一步进行,不要急于求成哦。 🔍视觉追踪能力🔍 🔹想让宝宝的视觉追踪能力更强?这里有个小技巧! 🔹让宝宝追踪图中数字的线条,提高他们的追踪能力。 🔹练习后,宝宝将变得更加敏锐,追踪能力也会有长足进步哦。 💡注意事项:适当调整难度,让宝宝充分体验追踪的乐趣。 🔍视觉线性空间感🔍 🔹想要培养宝宝的视觉线性空间感?这里有个妙招! 🔹让宝宝仔细观察数字的线条,理解线性空间感的变化。 🔹帮助宝宝感知线条的长度、方向和位置,提升他们的空间感知能力。 💡注意事项:让宝宝在放松愉快的状态下进行训练。 🎉快来试试这些训练方法吧!让宝宝的专注力更上一层楼!🎉 #儿童教育 #视觉训练 #数字敏感度 #视觉追踪能力 #线性空间感#不懂就问有问必答 #右脑开发 #注意力训练 #提高孩子学习的专注力 #孩子注意力不集中 #早期教育 #幼儿早教 #启蒙 #益智早教 #早教日常 #素材组 #专注力 #家庭教育 #儿童专注力训练 #游戏日常https://www.xiaohongshu.com/discovery/item/661642dd000000001a01101d?secondshare=weixin&share_from_user_hidden=true&appuid=&apptime=1716809845
模仿以上样式制作10*10宫格的圆圈,随机生成一根线贯通所有的圆圈。并根据路线生成1-100的数字,随机空缺N个。
'''
目标:圆点百数图,线路随机
作者:AI对话大师 阿夏
日期:2024年5月29日
# 的代码基本上是正确的,我只进行了一些微小的调整。现在,无论S是奇数还是偶数,都可以成功生成图像。如果S是奇数,将会生成斜线路径,如果S是偶数,将会生成直线路径。请注意,由于路径的生成是随机的,每次运行代码,生成的路径都可能有所不同。
'''
import random
from PIL import Image, ImageDraw, ImageFontpath = r'C:\Users\jg2yXRZ\OneDrive\桌面\圆点百数图'
image_folder = path + r'\jpg'max_attempts = 1000 # 最大尝试次数for xx in range(10):s = 4k = int(s * s * 50 / 100) + 1number_list = list(range(1, s * s + 1))random_numbers = random.sample(number_list, k)result = [str('' if i + 1 in random_numbers else i + 1) for i in range(s * s)]width = 2100height = 2100image = Image.new('RGB', (width, height), color=(255, 255, 255))draw = ImageDraw.Draw(image)wide = 10# 如果宫格等于7-10,就150,否则就是200if s==6:dot_size = 200if s==5:dot_size = 250if s==4:dot_size =300if s==3:dot_size =350if s==2:dot_size =350else:dot_size = 150margin = 20dot_padding = int((width - 2 * margin - dot_size * s) / s)canvas_width = width - 2 * margincanvas_height = height - 2 * marginmatrix_width = s * dot_size + (s - 1) * dot_paddingmatrix_height = s * dot_size + (s - 1) * dot_paddingstart_x = margin + (canvas_width - matrix_width) // 2start_y = margin + (canvas_height - matrix_height) // 2directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]attempts = 0 # 当前尝试次数success = False # 是否成功生成图像while attempts < max_attempts:start_point = (random.randint(0, s - 1), random.randint(0, s - 1))current_point = start_pointvisited_points = set([start_point])path = [start_point]def dfs():global current_pointglobal visited_pointsglobal pathif len(visited_points) == s * s:return Truefor direction in directions:neighbor_x = current_point[0] + direction[0]neighbor_y = current_point[1] + direction[1]neighbor = (neighbor_x, neighbor_y)if neighbor in visited_points:continueif 0 <= neighbor_x < s and 0 <= neighbor_y < s:visited_points.add(neighbor)path.append(neighbor)current_point = neighborif dfs():return Truevisited_points.remove(neighbor)path.pop()current_point = path[-1]return Falseif dfs():success = Truebreakattempts += 1if success:font = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc', 100)for i in range(len(path) - 1):if i < len(result) - 1:center_x1 = start_x + path[i][1] * (dot_size + dot_padding) + dot_size // 2center_y1 = start_y + path[i][0] * (dot_size + dot_padding) + dot_size // 2center_x2 = start_x + path[i + 1][1] * (dot_size + dot_padding) + dot_size // 2center_y2 = start_y + path[i + 1][0] * (dot_size + dot_padding) + dot_size // 2draw.line([(center_x1, center_y1), (center_x2, center_y2)], fill=(0, 0, 0), width=wide)for i in range(s):for j in range(s):center_x = start_x + j * (dot_size + dot_padding) + dot_size // 2center_y = start_y + i * (dot_size + dot_padding) + dot_size // 2draw.ellipse([(center_x - dot_size // 2, center_y - dot_size // 2),(center_x + dot_size // 2, center_y + dot_size // 2),],fill=(255, 255, 255),outline=(0, 0, 0),width=wide,)# 给所有起始点添加数字1-35for i in range(len(result) - 1):center_x1 = start_x + path[i][1] * (dot_size + dot_padding) + dot_size // 2center_y1 = start_y + path[i][0] * (dot_size + dot_padding) + dot_size // 2center_x2 = start_x + path[i + 1][1] * (dot_size + dot_padding) + dot_size // 2center_y2 = start_y + path[i + 1][0] * (dot_size + dot_padding) + dot_size // 2number = result[i]text_width, text_height = draw.textsize(str(number), font=font)text_x = center_x1 - text_width // 2text_y = center_y1 - text_height // 2draw.text((text_x, text_y), str(number), font=font, fill=(0, 0, 0))# 给最后一个圆点坐标添加数字 36if len(result) == s * s:last_x = start_x + path[-1][1] * (dot_size + dot_padding) + dot_size // 2last_y = start_y + path[-1][0] * (dot_size + dot_padding) + dot_size // 2draw.ellipse([(last_x - dot_size // 2, last_y - dot_size // 2),(last_x + dot_size // 2, last_y + dot_size // 2),],fill=(255, 255, 255),outline=(0, 0, 0),width=wide,)text_width, text_height = draw.textsize(result[-1], font=font)text_x = last_x - text_width // 2text_y = last_y - text_height // 2draw.text((text_x, text_y), result[-1], font=font, fill=(0, 0, 0))image_path = image_folder + fr'\{xx:03d}.png'image.save(image_path)else:print(f'无法生成图像:s={s}')
结果:
一、s=2-6可以按照指定数量生成。
其中双数的线条是水平垂直,单数线条是水平垂直还有部分倾斜
10次里面6次生成失败(出现倾斜线条),4次生成顺利
二、s>7,,生成数量不稳定
结论:宫格数字大于7就很难生成指定的数量,需要反复运行,卡死后终止程序,再次运行,反复收集获得10宫格的图片
让孩子们写不同宫格的数字填空,然后涂上ABCDABCD、ABBABB……之类的样式
相关文章:

【教学类-59-】专注力视觉训练01(圆点百数图)
背景需求: 视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线&a…...
C 语言实例 - 循环输出26个字母
循环输出 26 个字母。 以下例子我们用变量 letter 来存储当前要输出的字母,然后,使用 for 循环来重复 26 次输出字母,并在每个字母后面加一个空格。 循环内部使用 printf 函数来输出 letter 变量的值,%c 是 printf 的格式控制符…...
qt多语言翻译不生效的原因
假设您有QT语言家的基础知识,假设网上那些所有的问题您都已经排查过了,但依然翻译不生效,那么可以看下这篇帖子,其实就一个问题,变量的生命周期,假设QTranslator是一个函数内的变量,且没有被声明…...

springboot集成达梦数据库8,用springboot+mtbatisplus查询值为空
springboot集成达梦数据库8,用springbootmtbatisplus查询值为空 背景:springboot集成达梦数据库8,用springbootmtbatisplus查询值为空,但是在DB管理工具中是可以查询到数据的。 原因及解决方法:执行添加语句后…...

C语言-----指针数组 \ 数组指针
一 指针数组 用来存放指针的数组 int arr[10]; //整型数组 char ch[5]; //字符数组 int * arr[6]; //存放整型指针的数组 char * arr[5]; //存放字符指针的数组 // 指针数组的应用 int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,…...
Go语言 gRPC 简述
参考文章: 聊聊gRPC的特性和背后设计的原则(一)-腾讯云开发者社区-腾讯云 grpc-我们为什么要用gRpc?gRpc快在哪里?_grpc 优点-CSDN博客 GRPC详解-CSDN博客 1. 什么是gRPC gRPC 是一个高性能 远程调用(RPC)框架&#…...

信息系统项目管理师0136:工具与技术(8项目整合管理—8.9结束项目或阶段—8.9.2工具与技术)
点击查看专栏目录 文章目录 8.9.2 工具与技术 8.9.2 工具与技术 专家判断 结束项目或阶段过程中,应征求具备如下领域相关专业知识或接受过相关培训的个人或小组的意见,涉及领域包括:管理控制;审计;法规与采购…...
appium-driver方法待整理。。
app C:\Users\v-hongweishi\AppData\Local\Programs\Xmind\Xmind.exe deviceName DESKTOP-7NJ1ENB platformName Windows 应用程序ID(AppId)是应用程序用户模型 ID (AppUserModelID),简称 AUMID Outlook …...

Android Ktor 网络请求框架
Ktor 是一个由 JetBrains 开发的用于 Kotlin 编程语言的应用框架,旨在创建高性能的异步服务器和客户端应用程序。由于完全基于 Kotlin 语言,Ktor 能够让开发者编写出简洁、可读性强且功能强大的代码,特别适合那些已经熟悉 Kotlin 的开发人员。…...

交互设计如何助力传统技艺在当代复兴?
背景介绍 榫卯是中国传统木工中一种独特的接合技术,它通过构件间的凸凹部分相互配合来实现两个或多个构件的紧密结合。这种结构方式不依赖于钉子或其他金属连接件,而是利用木材自身的特性,通过精巧的设计和工艺,实现构件间的稳定…...

使用 Django Rest Framework 构建强大的 Web API
文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework(DRF)是一个强大的工具,用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能,包括序列化…...

老师如何对付挑事儿的家长?
身为老师,你有没有遇到过这样的家长:孩子在学校里闹点小矛盾,或者作业分数有点争议,他们就气势汹汹地来找你,说你偏心,甚至在其他家长面前说三道四?面对这种爱“挑事”的家长,老师们…...
若安装了Python3且没有删除Python2,那么启动yum命令会报错:
若安装了Python3且没有删除Python2,那么启动yum命令会报错: File "/usr/bin/yum", line 30 except KeyboardInterrupt e: ^ SyntaxError: invalid syntax 情况一报错原因 这种情况的原因是yum配置文件解释器默认是/…...

JVM(四)
在上一篇中,介绍了JVM组件中的运行时数据区域,这一篇主要介绍垃圾回收器 JVM架构图: 1、垃圾回收概述 在第一篇中介绍JVM特点时,有提到过内存管理,即Java语言相对于C,C进行的优化,可以在适当的…...
Leetcode373.查找和最小的 K 对数字
文章目录 题目描述解题思路代码 题目链接 题目描述 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (…...

windows 安装 使用 nginx
windows 安装 使用 nginx nginx官网下载地址:https://nginx.org/en/download.html 下载稳定版本即可 下载压缩包解压到即可 进入文件夹中,打开命令行窗口,执行启动命令 start nginx.exe验证(默认是80端口)&#x…...

【运维】Linux 端口管理实用指南,扫描端口占用
在 Linux 系统中,你可以使用以下几种方法来查看当前被占用的端口,并检查 7860 到 7870 之间的端口: 推荐命令: sudo lsof -i :7860-7870方法一:使用 netstat 命令 sudo netstat -tuln | grep :78[6-7][0-9]这个命令…...

Android笔记--应用安装
这一节了解一下普通应用安装app的方式,主要是唤起系统来安装,直接上代码: 申请权限 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name"android.permission.WRITE_EXT…...

今日分享站
同志们,字符函数和字符串函数已经全部学习完啦,笔记也已经上传完毕,大家可以去看啦。字符函数和字符串函数and模拟函数 加油!!!!!...

基于python flask的旅游数据大屏实现,有爬虫有数据库
背景 随着旅游行业的快速发展,数据在旅游决策和规划中的重要性日益凸显。基于 Python Flask 的旅游数据大屏实现研究旨在结合爬虫技术和数据库存储,为用户提供全面、实时的旅游信息展示平台。 爬虫技术作为数据采集的重要手段,能够从各种网…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...