当前位置: 首页 > news >正文

Python与图像处理

目录

一、认识图像

1、图像的构成

2、图像模式

二、处理图像

1、图像缩放

2、图像的旋转和翻转

3、滤镜效果

4、图片剪裁

5、图片素描

6、图片加水印


在众多的Python的第三方的库中,Pillow库是一个强大且方便的库,它能够处理图像,比如批量的对一些图片进行处理,或者增加一些滤镜,剪裁等等

一、认识图像

1、图像的构成

一个图像是由若干的像素构成的,屏幕上的每一个像素都是用三个很相近的点构成,分别显示红,绿,蓝三种颜色,每一个像素可以用一个元组(r ,g,b)来表示,而元组里面的rgb通常是不超过255整数

2、图像模式

图像一般会有以下几种模式:

①RGB:一个像素有红、绿、蓝三个分量

②RGBA:一个像素有红、绿、蓝三个分量,而剩下的那个A表示的是透明度

③CYMK:一个像素有青色、洋红色、黄色、黑色四个分量,每个像素可以用一个元组,即(c,y,m,k)来表示,这个是对应于彩色打印机或者印刷机的额四种颜色的墨水

④L:黑白图像,每一个像素就是一个整数,代表灰度

二、处理图像

1、图像缩放

我们用Python可以把一个图片进行缩放处理,变成略缩图

我们事先准备一张图片

然后在当前目录下写以下代码:

from PIL import Image   #Pillow库在这里是PIL!!!img = Image.open("D:\学习\Python\dwqs.jpg")   #打开图片w , h = img.size    #获取一下这个图片的宽和高
newSize = (w//2 , h//2)     #设置新的尺寸,即把那个图片的宽高÷2(整除)
newImage = img.resize(newSize)      #创建一个新的图片,让这个新图片就是之前img应用上了新尺寸
newImage.save(r"D:\学习\Python\newdwqs.jpg")      #保存newImage.thumbnail((128,128))   #对新图像进行缩放,把最大的宽和高设置到128像素
newImage.save(r"D:\学习\Python\newnewdwqs.jpg")   #保存
newImage.show()     #程序完成后展示出来

看看成品:

2、图像的旋转和翻转

①旋转

from PIL import Image   #Pillow库在这里是PIL!!!
from PIL.ImageOps import expandimg = Image.open("D:\学习\Python\dwqs.jpg")
print(img.format , img.mode)    #打印图像的格式和模式newImg = img.rotate(90 , expand = True)     #逆时针旋转90度,expand是延伸图像的尺寸,防止因为旋转,导致图像被裁剪
newImg.show()       #代码完成后显示一下

效果:

②翻转

from PIL import Image   #Pillow库在这里是PIL!!!
from PIL.ImageOps import expandimg = Image.open("D:\学习\Python\dwqs.jpg")
print(img.format , img.mode)    #打印图像的格式和模式newImg = img.transpose(Image.FLIP_LEFT_RIGHT)   #把图片水平翻转一下
newImg = img.transpose(Image.FLIP_TOP_BOTTOM)   #把图片垂直翻转一下newImg.show()       #代码完成后显示一下

效果:

3、滤镜效果

我们可以通过Python让图片进行一些变化,比如我们可以把一个图片变成浮雕样式的:

from PIL import Image   #Pillow库在这里是PIL!!!
from PIL import ImageFilterimg = Image.open("D:\学习\Python\dwqs.jpg")
newImg = img.filter(ImageFilter.EMBOSS)     #EMBOSS是浮雕效果
#BLUR是模糊效果,CONTOUR是轮廓效果,EDGE_ENHANCE是边缘增强,SMOOTH平滑,SHARPEN锐化newImg.show()       #代码完成后显示一下

效果:

(我们的代码中没有使用save保存操作,但是还是显示出了一个图片,这是因为代码把图片保存在了我们的newImage变量中,我们没有指定路径,当我们去看这个图片的路径时,我们会发现他在我们的C盘的Temp文件夹下,这就说明了这个图片被放到了临时文件夹(就是%temp%搜出来的那些)save相当于把它保存到了指定的路径)

外存 (硬盘)
+-------------------+
|  script.py        |  <- 代码文件
+-------------------+||  (运行时加载到内存)v
内存 (RAM)
+-------------------+
|  Python 解释器    |
|  变量 newImg      |  <- 变量存储在内存中
|  Image 对象       |  <- 数据存储在内存中
|  (运行时的数据)   |
+-------------------+

4、图片剪裁

我们在发朋友圈的时候,有时会把一个图片剪裁能一个九宫格的样子,这样可以让我们的朋友圈更创意,更好看,那么我们手搓一个图片剪裁器,来实现这个功能:

from PIL import Image   #Pillow库在这里是PIL!!!img = Image.open("D:\学习\Python\dwqs.jpg")w , h = img.size[0]//3 , img.size[1]//3     #获取一会每一个小的九宫格图片的长和宽,需要是原图的三分之一
gap = 10    #设置一会拼好的大图,九个图片之间的间隔是10个像素
newImg = Image.new("RGB" , (w * 3 + gap * 2 , h * 3 + gap *2) , "white")    #设置新的图片(大图),设置了新图片的模式,以及长宽,和这个gap的颜色
for i in range(0 , 3) :for j in range(0 , 3) :     #双重循环是用来遍历9个小图片的clipImge = img.crop((j*w , i*h , (j+1)*w , (i+1)*h))    #在crop中,是一个四元组,分别代表左上,右上,左下,右下的四个坐标,通过坐标进行剪裁clipImge.save("D:\学习\Python\DWQS\dwqs%d%d.jpg" % (i , j))   #多个图片,结合格式化,我们用i和j来命名newImg.paste(clipImge , (j*(w + gap) , i*(h + gap)))    #把小图片贴到大图片下面
newImg.save(r"D:\学习\Python\DWQS\new.jpg")   
newImg.show()

效果:

5、图片素描

当我们看到看到喜欢的图片或风景,想把他变成素描风格来临摹,我们可以用Python把图片变成素描风格的,便于临摹:

from PIL import Image   #Pillow库在这里是PIL!!!def SuMiao (img , threshold) :      #threshold阈值,用于判断像素之间的差异是否足够大w , h = img.size    #获取图像尺寸img = img.convert('L')      #把图像转化为灰度图像,“L”是黑白模式,上面有提到pix = img.load()    #返回一下图片的像素值,一会儿可以用pix[x,y]来访问图像(x,y)处的像素值for x in range(w-1) :for y in range(h-1) :   #遍历了大部分元素(不包含最右面的一列和最下面的一行,因为要和右下角的像素比较,这些像素没有右下角的像素可比较,防止报错)(少了这些也没啥影响)if abs(pix[x,y] - pix[x+1,y+1]) >= threshold :      #abs()是取绝对值操作,括号里面就是计算像素xy和其右下角的差值pix[x,y] = 0    #若满足要求,就把其灰度变成0,即黑色else :pix[x,y] = 255      #反之设置为255,即白色return img  
img = Image.open("D:\学习\Python\dwqs.jpg")
img = SuMiao(img , 15)      #调用
img.show()

效果:

6、图片加水印

我们可以用Python在图片上添加上自己的水印,来保护自己的知识产权

下面我们来看一下代码:
 

from PIL import Image   #Pillow库在这里是PIL!!!def ShuiYin (img , isTransParent , alpha) :     #isTransParent是一个函数,判断某个像素是不是要变透明,alpha表示透明度if img.mode != "RGBA" :img = img.convert('RGBA')   #如果水印图片不是RGBA模式,改为RGBA模式w , h = img.sizepixels = img.load()     #获取水印图片的大小和每个像素for x in range(w) :for y in range(h) :p = pixels[x , y]   #遍历每一个像素if isTransParent(p[0] , p[1], p[2]) :   #把RGB这三个参数输入这个isTransParent这个函数,判断是不是要把这个边透明pixels[x,y] = (p[0] , p[1] , p[2] , 0)      #最后一个变成0,就是改成透明else :pixels[x,y] = (p[0] , p[1] , p[2] , alpha)  #否则就使用其调用的透明度r, g , b , a = img.split()  #把图像的四个变量切开赋值return aimg = Image.open(r"D:\学习\Python\ShuiYin.png")   #打开水印图片
msk = ShuiYin(img , lambda r,b,g: r >245 and g > 245 and b > 245 , 130)     #调用函数,第一个是水印图片,第二个是匿名函数,把函数中获取的rgb三个数值进行比较,如果大于145(即和白色相近)就变透明,第三个就是如果不相近,就把那个像素设置为130这个透明度
imgSrc = Image.open("D:\学习\Python\dwqs.jpg")    #打开想要添加上水印的图片
imgSrc.paste(img , (imgSrc.size[0] - img.size[0] - 30 , imgSrc.size[1] - img.size[1] - 30) , mask = msk)     #paste用于把一个图像附在另一个图像上,现在就是在imgSrc(原图)上操作,第一个参数是水印图,第二个是具体位置(默认在右下角),位置就是原图的的宽-水印图的宽,为了有30px的距离,再减了30,
imgSrc.save(r"D:\学习\Python\New.png")    #成果保存
imgSrc.show()

成果:

以上就是Python与图像处理的全部内容:)

相关文章:

Python与图像处理

目录 一、认识图像 1、图像的构成 2、图像模式 二、处理图像 1、图像缩放 2、图像的旋转和翻转 3、滤镜效果 4、图片剪裁 5、图片素描 6、图片加水印 在众多的Python的第三方的库中&#xff0c;Pillow库是一个强大且方便的库&#xff0c;它能够处理图像&#xff0c;比…...

Lua语言脚本环境配置

参考地址&#xff1a;Lua 教程 | 菜鸟教程 Windows等直接下载安装地址&#xff1a;Lua Binaries 上面也是会跳转下载&#xff1a;https://sourceforge.net/projects/luabinaries/ 下载解压后在“环境变量”中添加路径&#xff0c;添加后如果cmd中还是无法使用lua命令&#x…...

JavaScript的异步编程

目录 目标 实战 回调函数 (Callback) Promise 目标 了解异步编程实现方式。 实战 回调函数 (Callback) 当某个任务完成后&#xff0c;调用回调函数来处理结果。它通常会导致回调地狱&#xff0c;即嵌套多个回调函数&#xff0c;官方不推荐使用。 function fetchData(call…...

Ubuntu里安装Jenkins

【方式1】&#xff1a;下载war包&#xff0c;直接运行&#xff0c;需提前搭建Java环境&#xff0c;要求11或17&#xff0c;不推荐&#xff0c;war包下载地址&#xff0c;将war包上传到服务器&#xff0c;直接使用命令启动 java -jar /data/jenkins/jenkins.war【方式2】&#…...

qt介绍tcp通信

服务器端代码 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);setWindowTitle("服务器");ui->port->setText("…...

elementui的默认样式修改

今天用element ui &#xff0c;做了个消息提示&#xff0c;发现提示的位置总是在上面&#xff0c;如图&#xff1a; 可是我想让提示的位置到下面来&#xff0c;该怎么办&#xff1f; 最后还是看了官方的api 原来有个自定义样式属性 customClass 设置下就好了 js代码 css代码 效…...

【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438

一、.NET3.5(包括.NET 2.0和3.0)安装方式 1.1 联网安装(需要联网,能访问微软,简单,很可能会失败) 1.2 离线安装-救急用(需要操作系统iso镜像文件,复杂,成功几率大) 二、联网安装 通过【控制面板】→【程序】→【程序和功能】→【启用或关闭Windows功能】 下载过程…...

leetcode 53.Maximum Subarray

分治法 //lSum表示[left,right]内以left为左端点的最大子段和 //rSum表示[left,right]内以right为右端点的最大字段和 //iSum表示[left,right]的区间和 int divide_conquer(int* nums,int left,int right,int *lSum,int *rSum,int *iSum){int maxSum;//表示[left,right]内的最…...

手机零售行业的 AI 破局与创新降本实践 | OceanBase DB大咖说

OceanBase《DB 大咖说》第 20 期&#xff0c;我们邀请了九机与九讯云的技术总负责人&#xff0c;李远军&#xff0c;为我们分享手机零售企业如何借力分布式数据库OceanBase&#xff0c;赋能 AI 场景&#xff0c;并通过简化架构实现成本管控上的突破与创新。 李远军于2016年加入…...

基于MCU实现的电机转速精确控制方案:软件设计与实现

本文将详细介绍一篇基于微控制器&#xff08;MCU&#xff09;的电机转速精确控制的软件方案。通过采样PWM信号控制和ADC采样技术&#xff0c;结合PID闭环控制算法&#xff0c;实现了电机转速的高效、稳定调节。以下是软件方案流程图&#xff0c;下文将对其进行展开讲解。 原图太…...

【力扣hot100题】(026)合并两个有序链表

可以创建一个新链表记录答案&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *…...

从代码学习深度学习 - 使用块的网络(VGG)PyTorch版

文章目录 前言一、VGG网络简介1.1 VGG的核心特点1.2 VGG的典型结构1.3 优点与局限性1.4 本文的实现目标二、搭建VGG网络2.1 数据准备2.2 定义VGG块2.3 构建VGG网络2.4 辅助工具2.4.1 计时器和累加器2.4.2 准确率计算2.4.3 可视化工具2.5 训练模型2.6 运行实验总结前言 深度学习…...

程序化广告行业(46/89):竞价结算规则、底价策略与内部排名解析

程序化广告行业&#xff08;46/89&#xff09;&#xff1a;竞价结算规则、底价策略与内部排名解析 大家好&#xff01;在之前的几篇博客中&#xff0c;我们已经深入探讨了程序化广告的多个重要方面&#xff0c;从基础概念到实际操作流程。我写这些博客的目的&#xff0c;就是希…...

C/C++ 基础 - 回调函数

目录 前言 回调函数预备知识 函数指针 什么是函数指针 函数指针的语法 如何用函数指针调用函数 函数指针作为函数的参数 函数指针作为函数返回类型 函数指针数组 回调函数 什么是回调函数 为什么要用回调函数 怎么使用回调函数 总结 前言 在写项目的时候&#x…...

【Node.js入门笔记12---npm包】

Node.js入门笔记12 Node.js---npm包一、什么是npm包&#xff1f;二、npm 基础使用三、包管理配置文件&#xff08;package.json&#xff09;四、提升下载速度 五、包的分类 Node.js—npm包 一、什么是npm包&#xff1f; 定义 npm&#xff08;全称 Node Package Manager&#x…...

黑盒测试的正交实验法

背景: 利用因果图法、判定表法可以帮助我们对于输入数据的组合情况进行用例设计&#xff0c;但当输入数据的组合数量巨大时&#xff0c;由于不太可能覆盖到每个输入组合的测试情况&#xff0c;因果图法或判定表法可能就不太适用了&#xff0c;可以采用正交实验法、来合理地减少…...

链表算法的技巧和方法

常用技巧&#xff1a; 1、画图 2、引入虚拟的头节点 3、不要害怕浪费空间&#xff0c;要勇于定义变量&#xff0c;eg:当链表的插入和删除的时候&#xff0c;为了便于结构体指针的连续性&#xff0c;就需要定义一个新的结构体指针&#xff0c;能更加方便&#xff1b; 4、使用快慢…...

Upload-labs 靶场搭建 及一句话木马的原理与运用

1、phpstudy及upload-labs下载 &#xff08;1&#xff09;下载phpstudy小皮面板 首先需要软件phpstudy 下载地址 phpStudy下载-phpStudy最新版下载V8.1.1.3 -阔思亮 &#xff08;2&#xff09;然后到github网址下载源码压缩包 网址 https://github.com/c0ny1/upload-labs 再…...

基于PX4和Ardupilot固件下自定义MAVLink消息测试(QGroundControl和Mission Planner)

在无人机行业&#xff0c;MAVLink&#xff08;Micro Air Vehicle Link&#xff09;协议已经成为了通信的标准协议。MAVLink协议定义了一种轻量级的消息传输格式&#xff0c;广泛应用于PX4和ArduPilot等开源无人机飞控固件中。通过自定义MAVLink消息&#xff0c;我们可以为无人机…...

Maven快速上手

在前面我们学习了许多关于JAVA的知识&#xff0c;从今天这个博客开始我们就要进入到JAVAEE进阶的学习中了&#xff0c;在这里你们可以学到项目是怎么被我们一步步写出来。让我们为之加油吧&#xff01;&#xff01;&#xff01;&#xff01; 本期讲解&#xff1a; 1.了解Maven…...

【Django】教程-5-ModelForm增删改查+规则校验【正则+钩子函数】

【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 11. ModelForm 11.1 models.py from django.utils import timezone from django.db import models# 数据库&#xff…...

JavaScript中 == 和 === 区别

== 运算符 它是相等运算符,用于比较两个 值 是否相等 ( 如果两个值的类型不同,它会尝试将它们转换为相同的类型,然后再比较。) 示例: console.log(1 == 1); // true,因为1被转换为数字1,所以相等 console.log(1 == true); // true,因为true被转换为数字1,所以相等…...

使用LangChain Agents构建Gradio及Gradio Tools(3)——使用Langchain agents构建Gradio UI

使用LangChain Agents构建Gradio及Gradio Tools(3)——使用Langchain agents构建Gradio UI 本篇摘要16. 使用LangChain Agents构建Gradio及Gradio Tool16.3 使用Langchain agents构建Gradio UI16.3.1 创建代理16.3.2 创建Gradio UI16.3.3 运行demo参考文献本章目录如下: 《使…...

scikit-surprise 智能推荐模块使用说明

目录 1、前言 2、算法 3、数据集 3.1 three built-in datasets are available: 3.2 Load a dataset from a pandas dataframe. 3.3 Load a dataset from a (custom) file. 3.4 Load a dataset where folds (for cross-validation) are predefined by some files. 4、pre…...

基于python开发的邮箱合并群发工具

智能邮件群发系统 一个基于Python和PyQt5开发的智能邮件群发工具&#xff0c;支持Word模板和Excel数据源的自动匹配&#xff0c;具有现代化UI界面和友好的用户体验。 Github项目地址&#xff1a;https://github.com/liugang926/Auto-mail-sent.git dist目录有编译好的exe程序&…...

分治算法之凸包问题

1. 算法思路 基本思想 利用分治策略解决凸包问题主要分为两大步骤&#xff1a; 分解&#xff08;Divide&#xff09;&#xff1a; 将所有点按照 x 坐标排序&#xff0c;并将点集分为左右两部分。 递归地对左右两部分分别求解凸包。 合并&#xff08;Conquer/Merge&#xf…...

OpenBMC:BmcWeb 处理http请求3 字典树查找节点

OpenBMC:BmcWeb 处理http请求2 查找路由对象-CSDN博客 findRouteByPerMethod实际上是调用了perMethod.trie.find(url);来查找路由对象的 class Trie {struct FindResult{unsigned ruleIndex;std::vector<std::string> params;};FindResult findHelper(const std::string…...

音频进阶学习二十五——脉冲响应不变法实现低通滤波器

文章目录 前言一、脉冲响应不变法1.定义2.模拟系统冲激响应的周期采样3.模拟系统和数字系统的频域响应关系1&#xff09;S域和Z域的关系2&#xff09;幅频响应的关系 4.通过有理函数设计滤波器5.总结 二、低通滤波器的设计实例1.给定数字滤波器指标2.转换模拟滤波器指标3.模拟滤…...

Linux中输入输出管理技巧

一、输入输出使用到的系统资源 1、字符设备&#xff08;Character Devices&#xff09; 什么是字符设备 字符设备是 Linux 中的一类设备&#xff0c;支持以字符为单位进行数据传输。与块设备不同&#xff0c;字符设备不需要缓 冲区&#xff0c;即数据是逐字节直接传递的。典…...

wireshark抓包工具的使用

下载地址&#xff1a;https://www.wireshark.org/#downloadLink 安装方式&#xff0c;一路next。 使用方式 第一步启动后选择你要抓包的网卡&#xff0c;ipconfig 可以查看你的默认网卡&#xff0c;我的是 以太网 双击进入。 筛选操作&#xff08;快速筛选方式&#xff09…...

javaweb自用笔记:文件上传案例、登录(统一拦截)案例

文件上传 或者说新建一个类配置好信息&#xff0c;然后到aliOssUtils里面用getter、setter方法获取到配置项 登录&#xff08;统一拦截&#xff09; 前端要json格式的数据&#xff0c;捕获到异常后前端可以显示错误&#xff08;对不起&#xff0c;操作失败&#xff0c;请联系管…...

【区块链安全 | 第十七篇】类型之引用类型(一)

文章目录 引用类型数据存储位置分配行为 数组特殊数组&#xff1a;bytes 和 string 类型bytes.concat 和 string.concat 的功能分配 memory 数组数组字面量&#xff08;Array Literals&#xff09;二维数组字面量数组成员&#xff08;Array Members&#xff09;悬空引用&#x…...

2025国内DevOps新手突围指南:从Gitee零门槛入门到工具链深度对比

对于刚接触DevOps的新手&#xff0c;推荐优先选择Gitee DevOps平台&#xff0c;其次是Jenkins和GitLab。Gitee DevOps作为国内领先的一站式研发效能平台&#xff0c;深度融合代码托管、持续集成/持续交付&#xff08;CI/CD&#xff09;、项目协作等功能&#xff0c;不仅界面简洁…...

【C语言】文件操作(2)

一、文件的随机读写 在前面我们学习了文件的顺序读写的函数&#xff0c;那么当我们要读取某个指定位置的内容的时候&#xff0c;是否只能顺序的读取到这个内容&#xff1f;还有在对文件进行输入的时候&#xff0c;需要对指定的位置进行写入&#xff0c;那么此时应该怎么办呢&a…...

将内网的IP地址映射到外网的几种方案

文章目录 1. 背景与目标2. 核心方案选型3. 方案A&#xff1a;路由器端口映射&#xff08;详细步骤&#xff09;3.1 前置条件3.2 配置流程3.3 验证访问 4. 方案B&#xff1a;云平台NAT网关配置&#xff08;以阿里云为例&#xff09;4.1 前置条件4.2 配置流程4.3 验证访问 5. 方案…...

基于深度学习的图像超分辨率技术研究与实现

一、引言 在数字图像处理领域,图像超分辨率技术一直是一个备受关注的热点话题。随着人们对图像质量要求的不断提高,如何将低分辨率图像提升到高分辨率,同时保持图像的细节和清晰度,成为了一个极具挑战性的问题。传统的图像超分辨率技术主要依赖于插值方法,如双线性插值、双…...

A股复权计算_权息数据整理

目录 前置&#xff1a; 步骤&#xff1a; 1 以通达信为参照 2 从优矿获取所需数据 2.1 股票配股信息 2.2 股票分红信息 2.3 股票拆股信息 3 合并数据&#xff0c;制成权息数据表 权息数据截止20250329.7z 视频 前置&#xff1a; 1 本系列将以 “A股复权计算_” 开头…...

如何进行Prompt调优?

一. 神奇的咒语 在输入prompt前&#xff0c;加入下面这一段“神奇的咒语”&#xff0c;中文或者英文&#xff0c;就能帮你优化提示词。 I want you to become my Expert Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt yo…...

Git Tag 详解:版本管理与实战指南

文章目录 Git Tag 详解&#xff1a;版本管理与实战指南1. Git Tag 的类型2. Git Tag 的常见操作(1) 创建标签① 创建轻量标签② 创建附注标签③ 给指定的提交打标签 (2) 查看标签(3) 删除标签(4) 推送标签到远程① 推送单个标签② 推送所有标签 (5) 删除远程标签 3. 使用 Tag 的…...

从零开始打造HTML5拼图游戏:一个Canvas实战项目

从零开始打造HTML5拼图游戏&#xff1a;一个Canvas实战项目 先看效果&#xff1a; 你是否曾经被那些精美的网页拼图游戏所吸引&#xff1f;用 HTML5 的 Canvas 技术&#xff0c;从零开始&#xff0c;教你怎么画图、处理鼠标事件&#xff0c;还有游戏的核心逻辑&#xff0c…...

【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)

之前我们分享过2000-2024年我国逐年的归一化植被指数&#xff08;NDVI&#xff09;栅格数据&#xff0c;该逐年数据是取的当年月归一化植被指数&#xff08;NDVI&#xff09;的年最大值&#xff01;另外&#xff0c;我们基于此年度栅格数据按照行政区划取平均值&#xff0c;得到…...

设计模式 Day 2:工厂方法模式(Factory Method Pattern)详解

继 Day 1 学习了单例模式之后&#xff0c;今天我们继续深入对象创建型设计模式——工厂方法模式&#xff08;Factory Method&#xff09;。工厂方法模式为对象创建提供了更大的灵活性和扩展性&#xff0c;是实际开发中使用频率极高的一种设计模式。 一方面&#xff0c;我们将简…...

TensorFlow SegFormer 实战训练代码解析

一、SegFormer 实战训练代码解析 SegFormer 是一个轻量级、高效的语义分割模型&#xff0c;结合了 ViT&#xff08;视觉 Transformer&#xff09; 和 CNN 的高效特征提取能力&#xff0c;适用于边缘 AI 设备&#xff08;如 Jetson Orin&#xff09;。下面&#xff0c;我们深入…...

51c嵌入式~单片机~合集7~※

我自己的原文哦~ https://blog.51cto.com/whaosoft/13692314 一、芯片工作的心脏--晶振 在振荡器中采用一个特殊的元件——石英晶体&#xff0c;它可以产生频率高度稳定的交流信号&#xff0c;这种采用石英晶体的振荡器称为晶体振荡器&#xff0c;简称晶振。 制作方法 …...

私有知识库 Coco AI 实战(一):Linux 平台部署

Coco AI 是一个完全开源、跨平台的统一搜索和生产力工具&#xff0c;能够连接各种数据源&#xff0c;包括应用程序、文件、Google Drive、Notion、Yuque、Hugo 等&#xff0c;帮助用户快速智能地访问他们的信息。通过集成 DeepSeek 等大型模型&#xff0c;Coco AI 实现了智能个…...

大模型高质量rag构建:A Cheat Sheet and Some Recipes For Building Advanced RAG

原文&#xff1a;A Cheat Sheet and Some Recipes For Building Advanced RAG — LlamaIndex - Build Knowledge Assistants over your Enterprise DataLlamaIndex is a simple, flexible framework for building knowledge assistants using LLMs connected to your enterpris…...

LeetCode 78.子集

问题描述 给定一个不含重复元素的整数数组 nums&#xff0c;返回其所有可能的子集&#xff08;幂集&#xff09;。 示例 输入&#xff1a; nums [1,2,3] 输出&#xff1a; [ [], [1], [1,2], [1,2,3], [1,3], [2], [2,3], [3] ]解法&#xff1a;回溯算法 回溯是一种 暴力…...

变量(Variable)

免责声明 如有异议请在评论区友好交流&#xff0c;或者私信 内容纯属个人见解&#xff0c;仅供学习参考 如若从事非法行业请勿食用 如有雷同纯属巧合 版权问题请直接联系本人进行删改 前言 提示&#xff1a;从小学解方程变量x&#xff0c;到中学阶段函数自变量x因变量y&…...

【STM32】最后一刷-江科大Flash闪存-学习笔记

FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程&#xff0c;&#xff08;系统存储器用于存储原厂写入的BootLoader程序&#xff0c;用于串口…...

Dify 深度集成 MCP实现灾害应急响应

一、架构设计 1.1 分层架构 #mermaid-svg-5dVNjmixTX17cCfg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5dVNjmixTX17cCfg .error-icon{fill:#552222;}#mermaid-svg-5dVNjmixTX17cCfg .error-text{fill:#552222…...