C++过生日(我给我自己做的生日礼物)

news2024/9/20 17:30:34

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

🚀欢迎互三👉:程序猿方梓燚 💎💎
🚀关注博主,后期持续更新系列文章
🚀如果有错误感谢请大家批评指出,及时修改
🚀感谢大家点赞👍收藏⭐评论✍

引言

今天是我的生日,我写了一段代码作为自己的生日礼物。

一、项目要求

主要功能是播放一段音乐旋律并展示一张图片,模拟 “祝我生日快乐” 的场景。

二、代码详解

一、包含的头文件及库

#include <iostream>
// 引入输入输出流头文件,用于控制台的输入输出操作。

#include <Windows.h>
// 提供与 Windows 操作系统交互的功能,在这里用于播放 MIDI 音乐。

#include<cstdio>
// 提供标准输入输出函数。

#include<cstdlib>
// 提供通用的函数,如内存分配等。

#include <graphics.h>
// 用于图形绘制,可创建图形窗口和进行图像显示等操作。

#include <conio.h>
// 提供控制台输入输出相关功能,如获取用户输入等。

#include <thread>
// 支持多线程编程,允许同时执行多个任务。

这部分代码引入了多个头文件,为程序提供了不同的功能支持。iostream用于输入输出操作,Windows.h用于与 Windows 系统交互以播放 MIDI 音乐,cstdiocstdlib提供了 C 风格的输入输出和通用函数,graphics.h用于图形绘制,conio.h用于控制台输入输出,thread用于多线程编程。

二、枚举定义

音阶枚举Scale

enum Scale {
    Rest = 0,
    C8 = 108,
    B7 = 107,
    A7s = 106,
    A7 = 105,
    G7s = 104,
    G7 = 103,
    F7s = 102,
    F7 = 101,
    E7 = 100,
    D7s = 99,
    D7 = 98,
    C7s = 97,
    C7 = 96,
    B6 = 95,
    A6s = 94,
    A6 = 93,
    G6s = 92,
    G6 = 91,
    F6s = 90,
    F6 = 89,
    E6 = 88,
    D6s = 87,
    D6 = 86,
    C6s = 85,
    C6 = 84,
    B5 = 83,
    A5s = 82,
    A5 = 81,
    G5s = 80,
    G5 = 79,
    F5s = 78,
    F5 = 77,
    E5 = 76,
    D5s = 75,
    D5 = 74,
    C5s = 73,
    C5 = 72,
    B4 = 71,
    A4s = 70,
    A4 = 69,
    G4s = 68,
    G4 = 67,
    F4s = 66,
    F4 = 65,
    E4 = 64,
    D4s = 63,
    D4 = 62,
    C4s = 61,
    C4 = 60,
    B3 = 59,
    A3s = 58,
    A3 = 57,
    G3s = 56,
    G3 = 55,
    F3s = 54,
    F3 = 53,
    E3 = 52,
    D3s = 51,
    D3 = 50,
    C3s = 49,
    C3 = 48,
    B2 = 47,
    A2s = 46,
    A2 = 45,
    G2s = 44,
    G2 = 43,
    F2s = 42,
    F2 = 41,
    E2 = 40,
    D2s = 39,
    D2 = 38,
    C2s = 37,
    C2 = 36,
    B1 = 35,
    A1s = 34,
    A1 = 33,
    G1s = 32,
    G1 = 31,
    F1s = 30,
    F1 = 29,
    E1 = 28,
    D1s = 27,
    D1 = 26,
    C1s = 25,
    C1 = 24,
    B0 = 23,
    A0s = 22,
    A0 = 21
};

这个枚举定义了不同的音阶,从最低音A0到最高音C8,还包括一个休止符Rest。它为后续播放音乐时表示不同的音符提供了一种方便的方式。

声音枚举Voice

enum Voice {
    X1 = C2,
    X2 = D2,
    X3 = E2,
    X4 = F2,
    X5 = G2,
    X6 = A2,
    X7 = B2,
    L1 = C3,
    L2 = D3,
    L3 = E3,
    L4 = F3,
    L5 = G3,
    L6 = A3,
    L7 = B3,
    M1 = C4,
    M2 = D4,
    M3 = E4,
    M4 = F4,
    M5 = G4,
    M6 = A4,
    M7 = B4,
    H1 = C5,
    H2 = D5,
    H3 = E5,
    H4 = F5,
    H5 = G5,
    H6 = A5,
    H7 = B5,
    LOW_SPEED = 500,
    MIDDLE_SPEED = 400,
    HIGH_SPEED = 300,
    _ = 0XFF
};

这个枚举定义了不同的音符以及一些特殊的值。其中,从X1H7分别对应不同的音符,LOW_SPEEDMIDDLE_SPEEDHIGH_SPEED表示不同的播放速度,_是一个占位符。这个枚举为播放音乐提供了更多的控制选项。
枚举定义部分的作用是为程序中的不同音符和特殊值提供一种易于理解和使用的命名方式,使得代码更加清晰可读。同时,也方便在后续的代码中进行音乐播放和控制。

三、函数实现

播放音乐函数SRKL

void SRKL() {
    HMIDIOUT handle;
    // 打开一个 MIDI 输出设备,并将设备句柄存储在 handle 变量中。
    midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL);

    int volume = 0x7f;
    // 定义音量为 0x7f。
    int voice = 0x0;
    // 初始化音符编号为 0。
    int sleep = 400;
    // 定义初始延迟时间为 400 毫秒。
    int tmp = 6;
    // 定义一个临时变量 tmp 并初始化为 6。

    int srkl[] = {
        L5, L5, L6, _, L5, _, M1, _, L7, _, _, _, L5, L5, L6, _, L5, _, M2, _, M1, _, _, L5, L5, M5, _, M3, _, M1, _,
        L7, _, L6, _, M4, M4, M3, _, M1, _, M2, _, M1, _, _, _,
        L5, L5, L6, _, L5, _, M1, _, L7, _, _, _, L5, L5, L6, _, L5, _, M2, _, M1, _, _, L5, L5, M5, _, M3, _, M1, _,
        L7, _, L6, _, M4, M4, M3, _, M1, _, M2, _, M1, _, _, _,
    };
    // 定义一个数组 srkl,其中包含了一系列音符和特殊标识,用于播放音乐旋律。

    for (int i : srkl) {
        if (i == LOW_SPEED || i == HIGH_SPEED || i == MIDDLE_SPEED) {
            sleep = i;
            // 如果当前元素是速度标识(LOW_SPEED、HIGH_SPEED、MIDDLE_SPEED),则更新延迟时间 sleep。
            continue;
        }
        if (i == 0) {
            sleep = 200;
            // 如果当前元素是 0,则将延迟时间设置为 200 毫秒。
            continue;
        }
        if (i == 700) {
            Sleep(200);
            // 如果当前元素是 700,则延迟 200 毫秒。
            continue;
        }
        if (i == _) {
            Sleep(400);
            // 如果当前元素是占位符 _,则延迟 400 毫秒。
            continue;
        }
        if (i == 1000) {
            tmp += 5;
            // 如果当前元素是 1000,则增加临时变量 tmp 的值。
            continue;
        }
        voice = (volume << 16) + ((i + tmp) << 8) + 0x90;
        // 计算音符编号 voice。
        midiOutShortMsg(handle, voice);
        // 通过 MIDI 输出设备发送音符编号播放音符。
        Sleep(sleep);
        // 根据延迟时间 sleep 进行延迟。
    }
    midiOutClose(handle);
    // 关闭 MIDI 输出设备。
}

这个函数用于播放一段特定的音乐旋律。它通过打开 MIDI 输出设备,设置音量、延迟时间等参数,然后遍历一个音符数组,根据不同的音符值进行不同的操作,包括播放音符、设置延迟时间等。最后关闭 MIDI 输出设备。

展示图片函数photo

void photo() {
    initgraph(614, 446); 
    // 初始化图形窗口,设置窗口大小为 614x446。

    // 加载图片
    IMAGE img;
    loadimage(&img, "res\\1.png");
    // 加载名为“res\\1.png”的图片到 IMAGE 对象 img 中。

    // 在窗口中绘制图片
    putimage(0, 0, &img);
    // 在图形窗口的左上角(0,0)位置绘制图片。

    _getch();
    // 等待用户输入。
    closegraph();
    // 关闭图形窗口。
}

这个函数用于在图形窗口中展示一张图片。它首先初始化图形窗口,然后加载指定的图片,将图片绘制在窗口中,等待用户输入后关闭图形窗口。

四、主函数main

int main() {
    system("title 祝我生日快乐");
    // 设置控制台窗口标题为“祝我生日快乐”。

    thread musicThread(SRKL);
    thread photoThread(photo);
    // 创建两个线程,一个线程执行 SRKL 函数播放音乐,另一个线程执行 photo 函数展示图片。

    musicThread.join();
    photoThread.join();
    // 等待两个线程执行完毕。

    return 0;
}

主函数首先设置控制台窗口标题,然后创建两个线程分别用于播放音乐和展示图片。接着,等待这两个线程执行完毕,最后返回 0,表示程序正常结束。

三、完整代码

#include <iostream>
// 引入输入输出流头文件,用于控制台的输入输出操作。
#include <Windows.h>
// 提供与 Windows 操作系统交互的功能,在这里用于播放 MIDI 音乐。
#include<cstdio>
// 提供标准输入输出函数。
#include<cstdlib>
// 提供通用的函数,如内存分配等。
#include <graphics.h>
// 用于图形绘制,可创建图形窗口和进行图像显示等操作。
#include <conio.h>
// 提供控制台输入输出相关功能,如获取用户输入等。
#include <thread>
// 支持多线程编程,允许同时执行多个任务。

#pragma comment(lib,"winmm.lib")
// 链接 winmm.lib 库,用于播放 MIDI 音乐。

// 定义音阶枚举
enum Scale {
    Rest = 0,
    // 表示休止符,值为 0。
    C8 = 108,
    // 表示高音 C,音符值为 108。
    B7 = 107,
    // 以下类似,分别表示不同的音符。
    A7s = 106,
    A7 = 105,
    G7s = 104,
    G7 = 103,
    F7s = 102,
    F7 = 101,
    E7 = 100,
    D7s = 99,
    D7 = 98,
    C7s = 97,
    C7 = 96,
    B6 = 95,
    A6s = 94,
    A6 = 93,
    G6s = 92,
    G6 = 91,
    F6s = 90,
    F6 = 89,
    E6 = 88,
    D6s = 87,
    D6 = 86,
    C6s = 85,
    C6 = 84,
    B5 = 83,
    A5s = 82,
    A5 = 81,
    G5s = 80,
    G5 = 79,
    F5s = 78,
    F5 = 77,
    E5 = 76,
    D5s = 75,
    D5 = 74,
    C5s = 73,
    C5 = 72,
    B4 = 71,
    A4s = 70,
    A4 = 69,
    G4s = 68,
    G4 = 67,
    F4s = 66,
    F4 = 65,
    E4 = 64,
    D4s = 63,
    D4 = 62,
    C4s = 61,
    C4 = 60,
    B3 = 59,
    A3s = 58,
    A3 = 57,
    G3s = 56,
    G3 = 55,
    F3s = 54,
    F3 = 53,
    E3 = 52,
    D3s = 51,
    D3 = 50,
    C3s = 49,
    C3 = 48,
    B2 = 47,
    A2s = 46,
    A2 = 45,
    G2s = 44,
    G2 = 43,
    F2s = 42,
    F2 = 41,
    E2 = 40,
    D2s = 39,
    D2 = 38,
    C2s = 37,
    C2 = 36,
    B1 = 35,
    A1s = 34,
    A1 = 33,
    G1s = 32,
    G1 = 31,
    F1s = 30,
    F1 = 29,
    E1 = 28,
    D1s = 27,
    D1 = 26,
    C1s = 25,
    C1 = 24,
    B0 = 23,
    A0s = 22,
    A0 = 21
};

// 定义声音枚举
enum Voice {
    X1 = C2,
    // 将 X1 定义为 C2 对应的音符值。
    X X2 = D2,
    // 以下类似,分别对应不同的音符。
    X3 = E2,
    X4 = F2,
    X5 = G2,
    X6 = A2,
    X7 = B2,
    L1 = C3,
    L2 = D3,
    L3 = E3,

    L4 = F3,
    L5 = G3,
    L6 = A3,
    L7 = B3,
    M1 = C4,
    M2 = D4,
    M3 = E4,
    M4 = F4,
    M5 = G4,
    M6 = A4,
    M7 = B4,
    H1 = C5,
    H2 = D5,
    H3 = E5,
    H4 = F5,
    H5 = G5,
    H6 = A5,
    H7 = B5,
    LOW_SPEED = 500,
    // 定义低速度播放对应的延迟时间为 500 毫秒。
    MIDDLE_SPEED = 400,
    // 定义中速度播放对应的延迟时间为 400 毫秒。
    HIGH_SPEED = 300,
    // 定义高速度播放对应的延迟时间为 300 毫秒。
    _ = 0XFF
    // 定义一个占位符,值为 0XFF。
};

// 播放音乐的函数
void SRKL() {
    HMIDIOUT handle;
    // 定义一个 MIDI 输出设备句柄。
    midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL);
    // 打开 MIDI 输出设备,并将句柄存储在 handle 中。

    int volume = 0x7f;
    // 定义音量为 0x7f。
    int voice = 0x0;
    // 初始化音符编号为 0。
    int sleep = 400;
    // 定义初始延迟时间为 400 毫秒。
    int tmp = 6;
    // 定义一个临时变量 tmp 并初始化为 6。

    int srkl[] = {
        L5, L5, L6, _, L5, _, M1, _, L7, _, _, _, L5, L5, L6, _, L5, _, M2, _, M1, _, _, L5, L5, M5, _, M3, _, M1, _,
        L7, _, L6, _, M4, M4, M3, _, M1, _, M2, _, M1, _, _, _,
        L5, L5, L6, _, L5, _, M1, _, L7, _, _, _, L5, L5, L6, _, L5, _, M2, _, M1, _, _, L5, L5, M5, _, M3, _, M1, _,
        L7, _, L6, _, M4, M4, M3, _, M1, _, M2, _, M1, _, _, _,
    };
    // 定义一个数组 srkl,其中包含了一系列音符和特殊标识,用于播放音乐旋律。

    for (int i : srkl) {
        if (i == LOW_SPEED || i == HIGH_SPEED || i == MIDDLE_SPEED) {
            sleep = i;
            // 如果当前元素是速度标识(LOW_SPEED、HIGH_SPEED、MIDDLE_SPEED),则更新延迟时间 sleep。
            continue;
        }
        if (i == 0) {
            sleep = 200;
            // 如果当前元素是 0,则将延迟时间设置为 200 毫秒。
            continue;
        }
        if (i == 700) {
            Sleep(200);
            // 如果当前元素是 700,则延迟 200 毫秒。
            continue;
        }
        if (i == _) {
            Sleep(400);
            // 如果当前元素是占位符 _,则延迟 400 毫秒。
            continue;
        }
        if (i == 1000) {
            tmp += 5;
            // 如果当前元素是 1000,则增加临时变量 tmp 的值。
            continue;
        }
        voice = (volume << 16) + ((i + tmp) << 8) + 0x90;
        // 计算音符编号 voice。
        midiOutShortMsg(handle, voice);
        // 通过 MIDI 输出设备发送音符编号播放音符。
        Sleep(sleep);
        // 根据延迟时间 sleep 进行延迟。
    }
    midiOutClose(handle);
    // 关闭 MIDI 输出设备。
}

void photo() {
    initgraph(614, 446); 
    // 初始化图形窗口,设置窗口大小为 614x446。

    // 加载图片
    IMAGE img;
    loadimage(&img, "res\\1.png");
    // 加载名为“res\\1.png”的图片到 IMAGE 对象 img 中。

    // 在窗口中绘制图片
    putimage(0, 0, &img);
    // 在图形窗口的左上角(0,0)位置绘制图片。

    _getch();
    // 等待用户输入。
    closegraph();
    // 关闭图形窗口。
}

int main() {
    system("title 祝我生日快乐");
    // 设置控制台窗口标题为“祝我生日快乐”。

    thread musicThread(SRKL);
    // 创建一个线程 musicThread,用于执行播放音乐的函数 SRKL。
    thread photoThread(photo);
    // 创建一个线程 photoThread,用于执行展示图片的函数 photo。

    musicThread.join();
    // 等待 musicThread 线程执行完毕。
    photoThread.join();
    // 等待 photoThread 线程执行完毕。

    return 0;
}

四、总结

该程序通过结合音乐播放和图片展示,为用户提供了一种多媒体的体验。利用多线程技术确保音乐和图片的展示可以同时进行,提高了程序的效率和用户体验。同时,代码中的枚举定义使得音符和特殊值的表示更加清晰可读,方便了音乐播放的控制。

五、素材

高清无水印图片素材如下↓↓↓
在这里插入图片描述

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

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

相关文章

电源自动测试系统:测试柜的组成与功能

为了提高电源测试的效率和安全性&#xff0c;电源自动化测试柜是电源ATE自动测试系统的重要设备&#xff0c;不仅对示波器、万用表等测试仪器起保护作用&#xff0c;更是在测试过程中降低了安全风险&#xff0c;方便了电源产品的自动化测试。 电源自动测试系统机柜 电源自动化测…

C++初学(15补充)

15.1、嵌套循环和二维数组 下面讨论如何使用嵌套for循环来处理二维数组。到目前为止&#xff0c;我们一直学的是一维数组&#xff0c;因为每一个数组都可以看作是一行数据。二维数组更像是一个表格——既有数据行也有数据列。C并没有提供二维数组类型&#xff0c;但是用户可以…

电池的入门

目录 化学电池主要参数电池种类常用电池 物理电池太阳能电池 化学电池 主要参数 1.容量 2.标称电压 3.内阻 4.充电终止电压 5.放点终止电压 电池种类 按能否充电分&#xff1a; 原电池&#xff08;Primary Cell&#xff09;&#xff1a;只能放电不能充电的电池&#xff0c…

FastGPT如何增减用户

背景 开源版本的FastGPT默认只有一个超级用户root&#xff0c;为了更好地管理应用和知识库&#xff0c;可以通过操作MongoDB数据库来增加新的用户和团队。 所需环境 已安装并运行的FastGPT实例MongoDB客户端工具&#xff08;如Mongo Shell或Robo 3T等&#xff09; 操作步骤…

一文带你了解React Hooks

目录 一、useState 二、useRef 三、useEffect 四、自定义Hook 五、Hooks使用规则 Hooks原意是“挂钩”&#xff0c;指将类组件中的部分功能直接可以挂钩到函数组件中&#xff0c;例如state、生命周期方法、副作用等功能。 为什么使用Hooks&#xff1f; 封装代码&#xff…

Harmony鸿蒙应用开发:解决Web组件加载本地资源跨域

鸿蒙开发文档中有一节 加载本地页面 提到了可以通过 $rawfile 方法加载本地 HTML 网页&#xff1a; Index.ets 1Web({ src: $rawfile("local.html"), controller: this.webviewController })但是如果在 local.html 中需要引用一些静态资源&#xff0c;例如图片、JS、…

STM32——TIM定时器的输入捕获功能

一、什么是输出比较与输入捕获&#xff1f; 可以看到&#xff1a; 输出比较OC是用于输出一定频率和占空比的PWM波形&#xff0c;可用于电机驱动进行调速等&#xff1b;而输入捕获IC是用于测量PWM波形的频率以及占空比等参数&#xff1b;和他们的名字相反&#xff0c;一个是比…

Datawhale AI夏令营第四期魔搭- AIGC文生图方向 task01笔记

目录 分任务1&#xff1a;跑通baseline 第一步——搭建代码环境 第二步——报名赛事 第三步——在魔搭社区创建PAI实例 分任务2&#xff1a;相关知识学习以及赛题理解 赛题理解&#xff1a; 文生图基本认识&#xff1a; 1. Diffusion Model(扩散模型) 2. LDMs&#x…

嵌入式Linux学习笔记

1.文件操作命令 2.VI编辑器的部分命令 3.Uboot命令设置环境变量 4. uboot 的顶层 Makefile的重点是“make xxx_defconfig”和“make”这两个命令 &#xff0c;分别如下&#xff1a; 5.在串口SecureCRT中利用uboot启动Linux内核的两种方式 6.Linux内核移植到开发板上也可以反…

常见错误导引 不锈钢螺钉的正确选购和使用分析

紧固件或螺钉是用于固定物体的机械工具。它们用于各种场景&#xff0c;从建造房屋、用具、玩具等。紧固件由多种材料制成&#xff0c;所有这些材料都有特定用途紧固件和用途。一些用于制造螺丝的材料包括不锈钢、铁、铜、铝和塑料。它通常会进行某种表面处理以提高其防锈性和/或…

day-40 合并区间

思路 将二维数组按照第一列升序排列&#xff0c;把intervals[0][0]作为第一个区间的起点&#xff0c;将 intervals[0][1]和intervals[1][0]进行比较&#xff0c;如果intervals[0][1]<intervals[1][0]&#xff0c;则不能合并&#xff0c;否则可以合并&#xff0c;将Math.max(…

绝对不能错过的60个Python日常高频写法总结!

一、 数字 1 求绝对值 绝对值或复数的模 In [1]: abs(-6)Out[1]: 62 进制转化 十进制转换为二进制&#xff1a; In [2]: bin(10)Out[2]: 0b1010十进制转换为八进制&#xff1a; In [3]: oct(9)Out[3]: 0o11十进制转换为十六进制&#xff1a; In [4]: hex(15)Out[4]: 0xf…

[ICS] 物理安全

工业控制系统安全气泡类比 这个理念是&#xff0c;为了防御那些无法更新到最新安全控制措施的旧系统&#xff0c;或者由于设备资源有限而无法处理安全控制措施的系统&#xff0c;帮助可视化这种设备的安全策略可以将它们放置在一个肥皂泡或玻璃泡中。泡中的系统和设备彼此信任…

Spring Cloud Stream与Kafka(一)

Spring Cloud Stream与Kafka&#xff08;一&#xff09; ​ 在实际开发过程中&#xff0c;消息中间件用于解决应用解耦&#xff0c;异步消息&#xff0c;流量削峰等问题&#xff0c;实现高可用、高性能、可伸缩和最终一致性架构。不同的消息中间件实现方式不同&#xff0c;内部…

遥感反演保姆级教程:SPSS筛选因子之后如何采用python建模和反演整个研究区?(以反演生物量为例)

SPSS筛选因子之后如何采用python建模和反演整个研究区?&#xff08;以反演生物量为例&#xff09; 引言 在遥感数据分析中&#xff0c;因子筛选和建模是关键步骤。筛选出与目标变量&#xff08;如生物量&#xff09;显著相关的因子&#xff0c;不仅可以提高模型的预测精度&a…

编程世界的平衡术:日常编码与自我提升的和谐共生

前言 在快速迭代的编程世界中&#xff0c;程序员的角色日益复杂且充满挑战&#xff0c;他们不仅是代码的编织者&#xff0c;更是技术进步的推动者。面对日常编码工作的繁重与个人成长的迫切需求&#xff0c;寻找两者之间的平衡点成为了每位程序员必须深思的问题。以下是我的详细…

C++初学者指南-5.标准库(第二部分)–特殊容器

C初学者指南-5.标准库(第二部分)–特殊容器 pair<A , B> 包含两个相同或不同类型的值 tuple<A , B> C11 包含许多相同或不同类型的值 optional C17 包含一个类型为 T 的值或没有值 variant<A,B,C,…> C17 包含一个类型为A、B或C的值…… any C17 包含任…

《花100块做个摸鱼小网站! 》第四篇—前端应用搭建和完成第一个热搜组件

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → &#x1f41f; 摸鱼小网站地址 学代码 → &#x1f4bb; 源码库地址 一、前言 在本系列文章的早期章节中&#xff0c;我们已经成功地购买了服务器并配置了MySQL、Redis等核心中间件。紧接着&#xff0c;我们不仅…

用AI来学习英语口语(白嫖,所以稍微麻烦些)

写在前面 本文看下如何使用AI来免费学习英语口语。 1&#xff1a;正文 首先&#xff0c;我们点击这里来到一个对话窗口&#xff0c;你可以在这个窗口中使用英语来询问你的问题&#xff0c;比如what can i do when i am not happy&#xff1a; 接着复制机器人回答内容&#…

datawhale AI夏令营第五期 深度学习入门 Task1 了解机器学习

机器学习基础 定义 学习一般是只有人才具备的能力&#xff0c;机器学习就是通过某种方式让机器具备人才有的学习能力&#xff0c;这里的某种方式是机器具备找一个函数的能力 比如说证件照背景颜色更换&#xff0c;那么机器需要找到图片中的背景在哪里&#xff0c;再替换成目…