【教学类-59-01】专注力视觉训练01(圆点百数图)

news2024/11/17 21:30:45

背景需求:

视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线,锻炼他们的视觉敏感度。 🔹在空白处填写数字,可根据线条的方向按顺序填写。 💡注意事项:引导宝宝一步一步进行,不要急于求成哦。 🔍视觉追踪能力🔍 🔹想让宝宝的视觉追踪能力更强?这里有个小技巧! 🔹让宝宝追踪图中数字的线条,提高他们的追踪能力。 🔹练习后,宝宝将变得更加敏锐,追踪能力也会有长足进步哦。 💡注意事项:适当调整难度,让宝宝充分体验追踪的乐趣。 🔍视觉线性空间感🔍 🔹想要培养宝宝的视觉线性空间感?这里有个妙招! 🔹让宝宝仔细观察数字的线条,理解线性空间感的变化。 🔹帮助宝宝感知线条的长度、方向和位置,提升他们的空间感知能力。 💡注意事项:让宝宝在放松愉快的状态下进行训练。 🎉快来试试这些训练方法吧!让宝宝的专注力更上一层楼!🎉 #儿童教育 #视觉训练 #数字敏感度 #视觉追踪能力 #线性空间感#不懂就问有问必答 #右脑开发 #注意力训练 #提高孩子学习的专注力 #孩子注意力不集中 #早期教育 #幼儿早教 #启蒙 #益智早教 #早教日常 #素材组 #专注力 #家庭教育 #儿童专注力训练 #游戏日常icon-default.png?t=N7T8https://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, ImageFont

path = r'C:\Users\jg2yXRZ\OneDrive\桌面\圆点百数图'
image_folder = path + r'\jpg'

max_attempts = 1000  # 最大尝试次数

for xx in range(10):
    s = 4
    
    k = int(s * s * 50 / 100) + 1
    number_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 = 2100
    height = 2100
    image = Image.new('RGB', (width, height), color=(255, 255, 255))
    draw = ImageDraw.Draw(image)
    wide = 10

    # 如果宫格等于7-10,就150,否则就是200
    if s==6:
        dot_size = 200
    if s==5:
        dot_size = 250
    if s==4:
        dot_size =300
    if s==3:
        dot_size =350
    if s==2:
        dot_size =350
    else:
        dot_size = 150
    margin = 20
    dot_padding = int((width - 2 * margin - dot_size * s) / s)

    canvas_width = width - 2 * margin
    canvas_height = height - 2 * margin

    matrix_width = s * dot_size + (s - 1) * dot_padding
    matrix_height = s * dot_size + (s - 1) * dot_padding

    start_x = margin + (canvas_width - matrix_width) // 2
    start_y = margin + (canvas_height - matrix_height) // 2

    directions = [(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_point
        visited_points = set([start_point])

        path = [start_point]

        def dfs():
            global current_point
            global visited_points
            global path

            if len(visited_points) == s * s:
                return True

            for 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:
                    continue

                if 0 <= neighbor_x < s and 0 <= neighbor_y < s:
                    visited_points.add(neighbor)
                    path.append(neighbor)
                    current_point = neighbor

                    if dfs():
                        return True

                    visited_points.remove(neighbor)
                    path.pop()
                    current_point = path[-1]

            return False

        if dfs():
            success = True
            break

        attempts += 1

    if 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 // 2
                center_y1 = start_y + path[i][0] * (dot_size + dot_padding) + dot_size // 2
                center_x2 = start_x + path[i + 1][1] * (dot_size + dot_padding) + dot_size // 2
                center_y2 = start_y + path[i + 1][0] * (dot_size + dot_padding) + dot_size // 2
                draw.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 // 2
                center_y = start_y + i * (dot_size + dot_padding) + dot_size // 2

                draw.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-35
        for i in range(len(result) - 1):
            center_x1 = start_x + path[i][1] * (dot_size + dot_padding) + dot_size // 2
            center_y1 = start_y + path[i][0] * (dot_size + dot_padding) + dot_size // 2
            center_x2 = start_x + path[i + 1][1] * (dot_size + dot_padding) + dot_size // 2
            center_y2 = start_y + path[i + 1][0] * (dot_size + dot_padding) + dot_size // 2

            number = result[i]
            text_width, text_height = draw.textsize(str(number), font=font)
            text_x = center_x1 - text_width // 2
            text_y = center_y1 - text_height // 2
            draw.text((text_x, text_y), str(number), font=font, fill=(0, 0, 0))

        # 给最后一个圆点坐标添加数字 36
        if len(result) == s * s:
            last_x = start_x + path[-1][1] * (dot_size + dot_padding) + dot_size // 2
            last_y = start_y + path[-1][0] * (dot_size + dot_padding) + dot_size // 2
            draw.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 // 2
            text_y = last_y - text_height // 2
            draw.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……之类的样式

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

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

相关文章

JavaScript-内存分配,关键字const

内存空间 内存分为栈和堆 栈&#xff1a;由操作系统自动释放存放的变量值和函数值等。简单数据类型存放在栈中 栈会由低到高先入后出 堆&#xff1a;存储引用类型 &#xff08;数组&#xff0c;对象&#xff09; 对象会先将数据存放在堆里面&#xff0c;堆的地址放在栈里面 关键…

喜讯 | 盘古信息冠捷科技、锐明科技IMS项目荣获创新案例、优秀案例

5月28日&#xff0c;中国数据要素及行业应用创新大会盛大启幕&#xff0c;现场汇聚了中国工程院院士、数据要素研究机构及数据要素知名企业、数字要素行业生态代表等300位业内相关人士。广东盘古信息科技股份有限公司副总经理朱熀锋代表盘古信息出席大会&#xff0c;并带来了IM…

Sytem.getenv的作用和意义介绍

Sytem.getenv的作用和意义介绍&#xff01;在实际的项目开发中&#xff0c;我们经常需要获取一些系统自身的环境变量&#xff0c;为此&#xff0c;java官方提供的这个系统环境变量&#xff0c;自带了一个方法&#xff0c;就可以直接拿到系统的环境变量值了。 下面是一个简单的…

誉天Linux云计算架构师就业班要学习哪些内容?

课程设计思路&#xff1a; 根据十多年来毕业学员的就业和反馈&#xff0c;对数百名学员的就业回访;Linux运维&#xff0c;云计算&#xff0c;高并发&#xff0c;分布式&#xff0c;容器&#xff0c;云原生&#xff0c;自动化等是目前市场上就业情况最好&#xff0c;需求量最大&…

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

需求 需求&#xff1a; 开发人员在产线上放置一个萤石摄像头&#xff0c;前端在可视化大屏上实时监控&#xff0c;且控制左右上下功能。 效果 萤石云接入web前期准备工作 阅读萤石云API文档&#xff1a;萤石云开放平台开发者文档 阅读萤石云控制API文档&#xff1a;萤石云摄…

CATIA二次开发VBA入门(4)——进程外开发环境搭建,vb.net在Visual Studio中开发,创建圆柱曲面的宏录制到二次开发案例

目录 引出vb.net和vb6.0 进程外开发环境搭建vb.net开发环境搭建《CATIA二次开发技术基础》模板 添加宏库引用 vs开发环境初步vs中的立即窗口对象浏览器 建立模板案例&#xff1a;创建一堆圆柱曲面第一步&#xff1a;录制宏第二步&#xff1a;代码精简第三步&#xff1a;for循环…

Aloha机械臂的mujoco仿真问题记录

今天在测试ACT代码时&#xff0c;遇到了仿真中的机械臂无法摆放正确的姿势来抓去红色方块。 后来经过测试&#xff0c;发现应该是python包的版本问题有误&#xff0c;下面记录下正确的包版本&#xff1a; 官方给出的包&#xff1a; conda create -n aloha python3.8.10 conda…

YOLOv8 简介

YOLOv8 是 YOLO 系列的最新版本&#xff0c;在 2023 年由 Ultralytics&#xff08;YOLO 的创造者&#xff09;发布&#xff0c;是性能最佳的目标检测器之一&#xff0c;被视为对现有 YOLO 变体&#xff08;如 YOLO v5 和 YOLOX&#xff09;的改进。 YOLOv8 支持全方位的视觉 A…

【C++】前缀和:一维前缀和

1.题目 2.算法思路 如果暴力求解的话&#xff0c;时间复杂度为O(n*q)。一定会超时。 优化的思路也很简单&#xff0c;就是得到一个求和数组arr&#xff0c;使arr[i]a1a2...ai。 然后每次求l到r之间的数时&#xff0c;直接arr[r]-arr[l-1]就可以得出&#xff01; 这样&#…

贷款借钱平台 小额贷款系统开发小额贷款源码 贷款平台开发搭建

这款是贷款平台源码/卡卡贷源码/小贷源码/完美版 后台51800 密码51800 数据库替换application/database.php程序采用PHPMySQL&#xff0c;thinkphp框架代码开源&#xff0c;不加密后台效果&#xff1a;手机版效果 这款是贷款平台源码/卡卡贷源码/小贷源码/完美版 后台51800 密码…

CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)

注意&#xff1a;本模型继续加入 组合预测模型全家桶 中&#xff0c;之前购买的同学请及时更新下载! 往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 VMD CEEMDAN 二次分解&#xff0c;Transformer-BiGRU预测模…

coveralls使用pytest进行本地测试时报错SyntaxError: invalid escape sequence \S

## 错误复现&#xff1a; git clone gitgithub.com:TheKevJames/coveralls-python.git cd coveralls-python poetry install poetry run pytest## 错误内容&#xff1a; ## 完整的打印信息 test session starts platform darwin -- Python 3.8.18, pytest-8.2.1, pluggy-1.5.…

【机器学习300问】104、残差网络是怎么起作用的?

残差网络&#xff08;Residual Network&#xff0c;简称ResNet&#xff09;诞生是为了解决深度神经网络的训练困难性问题。深度神经网络在图像分类等任务上取得了重大突破&#xff0c;但随着网络层数的增加&#xff0c;训练变得更加困难。 一、神经网络深度过深会出现…

与AI对话 --如何更好的使用AI工具

文章目录 与AI对话 --如何更好的使用AI工具1、认识AI工具&#xff1a;2、对话原则&#xff1a;3、提问步骤&#xff1a;4、AI可以学习什么&#xff1f;5、提问技巧&#xff1a;1、提出假设性问题:2、&#xff08;鼓励引导式提问&#xff09;跨学科思考:举个例子&#xff1a; 3、…

在Android中解析XML文件并在RecyclerView中显示

1. 引言 最近工作有解析外部xml文件在App中显示的需求&#xff0c;特来写篇文章记录一下&#xff0c;方便下次使用。 2. 准备工作 首先&#xff0c;在项目的AndroidManifest.xml文件中添加读取外部存储的权限声明。 <uses-permission android:name"android.permiss…

社交媒体数据恢复:百度贴吧

一、准备工作 请先确保您已登录百度账号&#xff0c;并熟悉百度贴吧的基本操作。 二、找回被系统删除的帖子 进入“我的”页面&#xff1a;在百度贴吧主页中&#xff0c;点击右下角的“我的”。 进入“我的帖子”页面&#xff1a;在个人中心页面中&#xff0c;点击“我的帖子…

生态农业:引领未来农业新篇章

生态农业&#xff0c;正以其独特的魅力和创新理念&#xff0c;引领着未来农业发展的新篇章。在这个充满变革的时代&#xff0c;我们需要更加关注农业的可持续发展&#xff0c;而生态农业正是实现这一目标的重要途径。 生态农业产业的王总说&#xff1a;生态农业强调生态平衡和可…

图形学初识--空间变换

文章目录 前言正文矩阵和向量相乘二维变换1、缩放2、旋转3、平移4、齐次坐标下总结 三维变换1、缩放2、平移3、旋转绕X轴旋转&#xff1a;绕Z轴旋转&#xff1a;绕Y轴旋转&#xff1a; 结尾&#xff1a;喜欢的小伙伴可以点点关注赞哦 前言 前面章节补充了一下基本的线性代数中…

2、C++简单程序设计:工具、数据类型与运算符

C简单编程 C编程工具程序开发基本概念程序工具VS界面简介项目创建项目调试帮助文档 C数据类型C程序基本结构C符号关键字标识符文字运算符分隔符空白 C数据类型基本数据类型常量变量符号常量 C运算符与表达式算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符C 中的运…

光伏设计有哪些工具可以使用?

在光伏系统的设计过程中&#xff0c;选择合适的工具对于提高设计效率、确保系统性能以及优化成本效益至关重要。以下是一些常用的光伏设计工具&#xff0c;它们在不同的设计阶段发挥着重要作用。 一、专业设计软件 专业设计软件是光伏系统设计的核心工具。这些软件提供了从初…