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

背景需求:

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

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

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

相关文章

【保姆级介绍下Foxmail 邮箱】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

旧手机翻身成为办公利器——PalmDock的介绍也使用

旧手机有吧&#xff01;&#xff01;&#xff01; 破电脑有吧&#xff01;&#xff01;&#xff01; 那恭喜你&#xff0c;这篇文章可能对你有点用了。 介绍 这是一个旧手机废物利用变成工作利器的软件。可以在 Android 手机上快捷打开 windows 上的文件夹、文件、程序、命…

SQL函数--union all 使用方法及案例

1. 使用方法 在 SQL 中&#xff0c;UNION ALL 操作用于结合两个或更多 SELECT 语句的结果集&#xff0c;包括所有匹配的行&#xff0c;甚至包括重复的行。这与 UNION 不同&#xff0c;因为 UNION 会自动删除重复的行。 满足条件&#xff1a; 1、两个select查询的列的数量必须相…

高级数据结构-并查集

例题1&#xff1a; Alice和Bob玩了一个古老的游戏&#xff1a;首先画一个 &#x1d45b;&#x1d45b; 的点阵&#xff08;下图 n3 &#xff09;。 接着&#xff0c;他们两个轮流在相邻的点之间画上红边和蓝边&#xff1a; 直到围成一个封闭的圈&#xff08;面积不必为 1&#…

应用层协议HTTP与HTTPS

HTTP与HTTPS的介绍 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;和HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff0c;超文本传输安全协议&#xff09;都是用于在Web上传输数据的协议&#xff0c;但它们之间存在一些重要…

【方法】如何禁止查看压缩包里的内容?

使用压缩文件&#xff0c;可以让文件更方便存储和传输&#xff0c;那对于重要的文件&#xff0c;如何防止随意查看压缩包的内容呢&#xff1f;我们可以试试以下两个方法。 方法1&#xff1a; 最常见的便是给压缩包设置“打开密码”&#xff0c;这样只有通过密码才能查看文件内…

《TCP/IP网络编程》(第十二章)I/O复用(2)

下面是基于I/O复用的回声服务器端和客户端代码 Linux系统 服务器端代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> // POSIX标准定义的通用函数&#xff0c;如close() #include <arpa/inet.h> // 提…

JVM(四)

在上一篇中&#xff0c;介绍了JVM组件中的运行时数据区域&#xff0c;这一篇主要介绍垃圾回收器 JVM架构图&#xff1a; 1、垃圾回收概述 在第一篇中介绍JVM特点时&#xff0c;有提到过内存管理&#xff0c;即Java语言相对于C&#xff0c;C进行的优化&#xff0c;可以在适当的…

写Python时不用import,你会遭遇什么

from *** import *** 想必你已经再熟悉不过这样的python语法。 当你的 python 代码需要获取外部的一些功能&#xff08;一些已经造好的轮子&#xff09;&#xff0c;你就需要使用到 import 这个声明关键字。import可以协助导入其他 module 。&#xff08;类似 C 预约的 inclu…

php反序列化初步了解

一、定义 序列化&#xff08;串行化&#xff09;&#xff1a;将变量转换为可保存或传输的字符串的过程&#xff08;通常是字节流、JSON、XML格式&#xff09; 反序列比&#xff08;反串行化&#xff09;&#xff1a;把这个字符串再转化成原始数据结构或对象&#xff08;原来的…

J.搬砖【蓝桥杯】/01背包+贪心

搬砖 01背包贪心 思路&#xff1a;要让重量更小的在更前面&#xff0c;价值更大的在更后面&#xff0c;vi−wj>vj−wi viwi>vjwj 第 i 个箱子放在第 j 个箱子下面就显然更优。所以进行排序再用01背包即可。 #include<iostream> #include<algorithm> #defi…

MVC和Filter

目录 MVC和三层架构模型的联系 Filter 概念 作用 应用场景 步骤 简单入门 MVC和三层架构模型的联系 m-->model即模型是三层架构模型的业务层&#xff08;service&#xff09;和持久层(dao) v-->views即视图是三层架构模型的表现层(web) c-->controller即控制器也…

python中pow是什么意思

pow()方法返回xy&#xff08;x的y次方&#xff09;的值。 语法 以下是math模块pow()方法的语法&#xff1a; import math math.pow( x, y ) 内置的pow()方法 pow(x, y[, z]) 函数是计算x的y次方&#xff0c;如果z在存在&#xff0c;则再对结果进行取模&#xff0c;其结果等效…

【JS红宝书学习笔记】第4章 变量、作用域和内存

第4章 变量、作用域和内存 1. 原始值和引用值&#xff08;面试题&#xff09; ECMAScript 变量可以包含两种不同类型的数据&#xff1a;原始值和引用值。原始值&#xff08;primitive value&#xff09;就是最简单的数据&#xff08;Undefined、Null、Boolean、Number、Strin…

鸿蒙应用模型:【Stage模型开发】概述

Stage模型开发概述 基本概念 下图展示了Stage模型中的基本概念。 图1 Stage模型概念图 [AbilityStage] 每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例&#xff0c;当HAP中的代码首次被加载到进程中的时候&#xff0c;系统会先创建AbilityStage实例…

TCP/IP协议族

基于这张图片的一篇blog TCP/IP模型通常被分为四个层次&#xff1a;应用层、传输层、网络层和网络接口层。在这个模型中&#xff0c;不同的网络协议负责完成不同的任务&#xff0c;以确保数据可以在网络中高效、可靠地传输。以下是对这张图中每个协议的解释&#xff1a; 应用层…

[自动驾驶技术]-6 Tesla自动驾驶方案之硬件(AI Day 2021)

1 硬件集成 特斯拉自动驾驶数据标注过程中&#xff0c;跨250万个clips超过100亿的标注数据&#xff0c;无论是自动标注还是模型训练都要求具备强大的计算能力的硬件。下图是特斯拉FSD计算平台硬件电路图。 1&#xff09;神经网络编译器 特斯拉AI编译器主要针对PyTorch框架&am…

企业为何广泛应用数据可视化?解析其背后原因

数据可视化为何能在企业当中广泛应用&#xff1f;这是一个值得探讨的话题。在当今信息爆炸的时代&#xff0c;企业每天都会产生和处理大量的数据&#xff0c;这些数据蕴含着丰富的信息和潜在的商业价值。然而&#xff0c;面对海量数据&#xff0c;如何高效地分析、理解和利用它…

特定车型专属AI模型解决方案,高清图像,稳定输出

美摄科技凭借其对人工智能领域的深刻理解和技术积累&#xff0c;为企业带来了一项革命性的解决方案——特定车型专属AI模型。这一方案以专属车型照片为基础&#xff0c;通过先进的AI生成模型训练&#xff0c;为企业提供个性化、高清、稳定的车辆图像和视频生成服务&#xff0c;…

景源畅信电商:抖音开店步骤是什么?

随着社交媒体的兴起&#xff0c;抖音已经成为一个不可忽视的电商平台。许多人都希望通过抖音开店来实现自己的创业梦想。那么&#xff0c;抖音开店的具体步骤是什么呢?接下来&#xff0c;我们将详细阐述这一问题。 一、明确回答问题抖音开店的步骤主要包括&#xff1a;注册账号…