计算机视觉(opencv-python)入门之图像的读取,显示,与保存
在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。
示例图片
目录
opencv获取方式
图像基本知识
颜色空间
RGB
HSV
图像格式
BMP格式
TIFF格式
GIF格式
JPEG格式
PNG格式
读取图像cv2.imread()
imread各flags参数含义详解
读取结果说明
Ndarray说明
获取单通道颜色矩阵
显示图像
使用cv2.imshow()显示图像
cv2.waitKey()
cv2.destroyAllWindows()
使用plt.imshow()显示图像
保存图像cv2.imwrite()
总结
opencv获取方式
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple opencv-python
图像基本知识
颜色空间
颜色空间是一种用来表示颜色的数学模型,它描述了如何将颜色信息数字化,以便于计算机进行处理和分析。在计算机视觉和图像处理领域,常见的颜色空间包括RGB、HSV等。
RGB
RGB颜色空间是最常用的颜色空间之一,它基于红(Red)、绿(Green)、蓝(Blue)三种基本颜色,通过调整这三种颜色的强度和组合,可以产生各种颜色。
在RGB颜色空间中,每个颜色的强度值范围通常在0到255之间,分别代表红、绿、蓝三种颜色的亮度。通过调整这些亮度值,可以混合出各种颜色。例如,当RGB三个通道的强度值都为0时,表示黑色;当RGB三个通道的强度值都为255时,表示白色。
RGB颜色调色板
HEX是一种常用于网页设计和图像处理中的颜色表示方法,它通过六位十六进制数来表示RGB颜色空间中的颜色。在HEX表示法中,前两位代表红色强度,中间两位代表绿色强度,最后两位代表蓝色强度。
通过改变这三个值的不同组合,可以得到一个包含2^24=16777216种颜色的调色板,但是人眼可见的却远远少于这个数字。
例如我们总是认为乌鸦是黑色的,但其实在不同的光照条件下,乌鸦的羽毛可能会呈现出彩色的光泽。这正是因为RGB颜色空间虽然能够表示大量的颜色,但人眼的颜色感知却受到环境、光照等多种因素的影响。
乌鸦羽毛五彩斑斓的黑
HSV
HSV(Hue, Saturation, Value)是根据颜色的直观特性 色调(Hue)、饱和度(Saturation)和明度(Value)三个参数。由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
HSV分量可以通过RGB各分量值转化得到,计算公式如下:
其中,R,G,B分别为RGB颜色空间中的3个分量。
图像格式
常见的图像格式有BMP格式,TiIFF格式,GIF格式,JPEG格式,PNG格式等。
BMP格式
BMP格式是windows环境中的一种标准(但很多microsoft应用程序不支持它),这种格式采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。
TIFF格式
TIFF格式是一种灵活的图像存储格式,广泛应用于印刷、出版和扫描领域。它支持多种色彩模式,包括灰度、RGB、CMYK等,并允许无损压缩,以在保证图像质量的同时减少文件大小。TIFF格式还支持多层图像和透明度,使其在处理复杂图像时具有显著优势。此外,TIFF格式具有良好的兼容性,能够被多种图像编辑和处理软件所支持。
GIF格式
GIF格式是一种广泛用于网络传输的图像格式。GIF格式以其独特的无损压缩技术和支持透明背景的特性而著称,这使得GIF图像在保持高质量的同时,文件大小相对较小,非常适合在网络上快速加载和显示。此外,GIF格式还支持动画效果,能够创建简单的动态图像,这一特性使其在社交媒体和网页设计中备受欢迎。尽管GIF格式的色彩深度有限,通常只能显示256种颜色,但这并不妨碍它在特定应用场景下的广泛应用。
JPEG格式
JPEG格式源自对相对静止灰度或彩色图像的一种压缩标准,在使用有损压缩方法时可节省的空间是相当大的,目前数码相机中均使用这种格式。尽管JPEG格式采用有损压缩,可能会导致一定的图像质量损失,但通过调整压缩级别,用户可以在图像质量和文件大小之间找到理想的平衡点。这种灵活性使得JPEG格式成为存储和传输大量图片的优选方案,尤其是在存储空间有限或网络带宽受限的情况下。此外,JPEG格式还具有良好的跨平台兼容性,几乎可以被所有主流的图像查看器和编辑器所支持。
PNG格式
PNG是一种无损压缩的图像格式,支持透明背景和Alpha通道,使得图像在保持高质量的同时,还能展现出更为丰富的层次感和细腻度。与GIF格式相比,PNG格式在色彩深度上不再受限,能够显示1600多万种颜色,这为图像的色彩表现提供了更广阔的空间。此外,PNG格式还支持多种图像编辑功能,如伽玛校正、文本注释等,进一步增强了其在图像处理和编辑领域的实用性。由于其无损压缩的特性,PNG格式在需要保持图像原始质量和细节的应用场景中,如网页设计中的图标、按钮等,具有不可替代的优势。
需要注意的是PNG格式的图片相对于其他格式图片来说,除了RGB三通道以外还多了一层alpha通道,这一层alpha通道使得PNG图片支持透明度设置,即可以实现图片的半透明效果,或者是抠图后的图片背景透明化。
读取图像cv2.imread()
#cv2.imread读取图像
import cv2
image=cv2.imread(filename='test.jpg',flags=cv2.IMREAD_UNCHANGED)
#filename:图像文件的路径
#flags:#cv2.IMREAD_COLOR:BGR格式彩色图像 #cv2.IMREAD_GRAYSCALE:灰度图像,是单通道的 #cv2.IMREAD_UNCHANGED:包括alpha通道,即透明通道#cv2.IMREAD_COLOR_BGR,以BGR格式读取图像,彩色#cv2.IMREAD_COLOR_RGB,以RGB格式读取图像,彩色#cv2.IMREAD_ANYDEPTH:读取任意深度的图像#cv2.IMREAD_ANYCOLOR:读取任意颜色的图像#cv2.IMREAD_LOAD_GDAL:使用GDAL读取图像#cv2.IMREAD_REDUCED_COLOR_2:读取1/2的彩色图像#cv2.IMREAD_REDUCED_COLOR_4:读取1/4的彩色图像#cv2.IMREAD_REDUCED_COLOR_8:读取1/8的彩色图像#cv2.IMREAD_REDUCED_GRAYSCALE_2:读取1/2的灰度图像#cv2.IMREAD_REDUCED_GRAYSCALE_4:读取1/4的灰度图像#cv2.IMREAD_REDUCED_GRAYSCALE_8:读取1/8的灰度图像#cv2.IMREAD_IGNORE_ORIENTATION:忽略图像的方向信息#cv2.IMREAD_COLOR是默认值,读取的图像是彩色BGR格式相当与cv2.IMREAD_COLOR_BGR
print(image.shape)
cv2.imread()函数各flags参数含义详解
cv2.imread()函数只有两个参数,filename与flages,filename指图像文件路径,flags是指定图像读取的方式。
以下是所有flags释义:
cv2.IMREAD_COLOR | 读取彩色图像 |
cv2.IMREAD_GRAYSCALE | 读取单通道的灰度图像 |
cv2.IMREAD_UNCHANGED: | 按照图像原格式读取图像,若图像是png图像那么包括alpha通道,即透明通道,此时图像是四通道的,若图像不是png格式那么还是三通道。 |
cv2.IMREAD_COLOR_BGR | 以BGR格式读取图像,彩色 |
cv2.IMREAD_COLOR_RGB | 以RGB格式读取图像,彩色 |
cv2.IMREAD_ANYDEPTH | 读取任意深度的图像 |
cv2.IMREAD_ANYCOLOR | 读取图像时自动检测并保留图像的原始颜色通道数。 |
cv2.IMREAD_LOAD_GDAL | 使用GDAL读取图像。GDAL 是专门用于处理地理空间数据格式的库,如 GeoTIFF、ENVI、HFA 等。 |
cv2.IMREAD_REDUCED_COLOR_2 | 读取1/2的彩色图像 |
cv2.IMREAD_REDUCED_COLOR_4 | 读取1/4的彩色图像 |
cv2.IMREAD_REDUCED_COLOR_8: | 读取1/8的彩色图像 |
cv2.IMREAD_REDUCED_GRAYSCALE_2 | 读取1/2的灰度图像 |
cv2.IMREAD_REDUCED_GRAYSCALE_4 | 读取1/4的灰度图像 |
cv2.IMREAD_REDUCED_GRAYSCALE_8 | 读取1/8的灰度图像 |
cv2.IMREAD_IGNORE_ORIENTATION | 忽略图像的方向信息 |
读取结果说明
Ndarray说明
Ndarray的一般结构为:
[行数,列数,深度]
其中行和列都是一维数组,我们知道行*列便可以构成矩阵,而深度则用来表示不同的行*列构成的矩阵的在最外层的数组中的索引。简而言之,ndarray就是数组内嵌套矩阵的格式,这样会十分方便理解。
上述代码中的image为读取结果,由于我们的示例图片是.jpg格式没有alpha通道,所以flags使用cv2.IMREAD_UNCHANGED与cv2.IMREAD_COLOR并没有区别,通道数都为3。
image的shape:(1161, 1080, 3)
cv2.imread()函数的结果是ndarray,我们打印出其shape的结果中前两个参数是图像的高与宽,第三个参数是image的维度,这里的维度其实就是图像的RGB通道数。
获取单通道颜色矩阵
倘若我们想要分别切片获取image的三个通道数对应的颜色矩阵那么我们可以这样写.
blue=image[:,:,0]
green=image[:,:,1]
red=image[:,:,2]
#或者
blue=image[0:1161,0:1080,0]
green=image[0:1161,0:1080,1]
red=image[0:1161,0:1080,2]
在第一种写法中,这里要说明一下的是,ndarray的切片方法与python的list切片方法一致,切片时有一个特殊用法就是[:],它相当与[0:len(array)]用来直接获取整个数组所有值,倘若你要是不知道某一维这个数组的长度(比如上边我们读取的图像高1161宽1080,直接切片需[0:1161,0:1080]),又想获取整个数组的所有内容,可以使用这种方法。
当然,为了方便,cv2已经内置了split函数替我们直接获取三个颜色通道的矩阵。
blue,green,red=cv2.split(image)
显示图像
使用cv2.imshow()显示图像
import cv2#opencv读取的格式是BGR
image=cv2.imread('test.jpg')
image=cv2.resize(image,(500,500))#更改一下图像大小,为了方便显示
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
这里的image是一个shape为(500,500,3)的ndarray,表示这是一个500x500像素的彩色图像,具有红、绿、蓝三个颜色通道。每个颜色通道都是一个500x500的二维数组。
结果
cv2.waitKey()
cv2.waitKey()是用来在OpenCV(cv2)库中暂停程序执行并等待用户按键的函数。这个函数通常在显示图像时使用,比如在一个窗口中显示图像后,我们希望程序在用户按下任意键后再继续执行后续操作,这时就可以使用cv2.waitKey()函数。该函数接受一个整数参数,表示等待的毫秒数。如果参数为0,则表示无限期等待,直到用户按下键盘上的任意键。在按下键后,cv2.waitKey()会返回按键的ASCII码值,我们可以根据这个返回值来判断用户按下了哪个键。需要注意的是,在使用cv2.waitKey()之前,必须已经创建了一个图像显示窗口,否则该函数将无法正常工作。
cv2.destroyAllWindows()
cv2.destroywindows()是用来关闭所有OpenCV创建过的窗口的,这些窗口实际是都是使用python内置库tkinter编写的,先前的tkinter窗口会阻塞主线程。所以,当我们完成图像处理或显示操作后,经常需要关闭这些窗口以释放资源。倘若不将他们关闭当前图像窗口可能无法显示。
使用plt.imshow()显示图像
import cv2#opencv读取的格式是BGR
import matplotlib.pyplot as plt#matplotlib读取的格式是RGB
image=cv2.imread('test.jpg')
image=cv2.resize(image,(500,500))
#使用plt.imshow(),需要先将BGR转化成RGB,这里使用cv2.cvtColor颜色通道转换函数完成
image=cv2.cvtColor(image,cv2.COLOR_RGB2BGR)
plt.axis('off')
plt.imshow(image)
结果
这里需要注意的是opencv读取的图像时默认格式是BGR,而matplotlib读取的格式是RGB,如果我们在读取图像时不指定读取方式且不使用cv2.cvtColor()通道转换函数将颜色通道转换成RGB的话,那么显示出来的图像的颜色便会怪怪的。。。
这是因为,matplotlib把原本是红色的通道误认为是蓝色通道,而原本是蓝色的通道则被认为是红色通道。这种颜色通道的错位就会导致图像颜色显示异常、
但是,无论如何,cv2.imshow与plt.imshow这两个函数在显示图像时,需要传入的都是图像的ndarray数据。
保存图像cv2.imwrite()
#cv2.imwrite保存图像
import cv2
image=cv2.imread(filename='test.jpg',flags=cv2.IMREAD_UNCHANGED)
#图像经过某些变换或操作后需要保存
cv2.imwrite(filename='newImage.jpg',img=image,params=[int(cv2.IMWRITE_JPEG_QUALITY), 50])
#filename:保存图像文件名称
#img:图像颜色矩阵
#params:参数是一个可选的序列(通常是列表或元组),用于传递图像编码和压缩相关的参数。
当我们需要保存图像时,直接调用cv2.imwrite()函数即可。
总结
本文主要介绍了opencv图像的读取与显示,后序还将分享更多相关图像处理技术,以及如何利用cv2进行图像特征提取和匹配。并且还会将所有内容合并到专栏中,免费订阅。
通过本专栏的学习,读者将能够利用cv2库解决实际的图像处理问题,为计算机视觉项目打下坚实基础。
相关文章:
计算机视觉(opencv-python)入门之图像的读取,显示,与保存
在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …...
现代前端框架渲染机制深度解析:虚拟DOM到编译时优化
引言:前端框架的性能进化论 TikTok Web将React 18迁移至Vue 3后,点击响应延迟降低42%,内存占用减少35%。Shopify采用Svelte重构核心交互模块,首帧渲染速度提升580%。Discord在Next.js 14中启用React Server Components后…...
Selenium自动化测试:如何搭建自动化测试环境,搭建环境过程应该注意的问题
最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的…...
Linux服务升级:Almalinux 升级 DeepSeek-R1
目录 一、实验 1.环境 2.Almalinux 部署 Ollama 3.Almalinux 升级 DeepSeek-R1 4.Almalinux 部署 docker 5. docker 部署 DeepSeek-R1 6.Almalinux 部署 Cpolar (内网穿透) 7.使用cpolar内网穿透 二、问题 1.构建容器失败 一、实验 1.环境 (1)…...
《HelloGitHub》第 107 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...
【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.2Kibana可视化初探
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 10分钟快速部署Kibana可视化平台1. Kibana与Elasticsearch关系解析1.1 架构关系示意图1.2 核心功能矩阵 2. 系统环境预检2.1 硬件资源配置2.2 软件依赖清单 3. Docker快速部…...
网络七层模型—OSI参考模型详解
网络七层模型:OSI参考模型详解 引言 在网络通信的世界中,OSI(Open Systems Interconnection)参考模型是一个基础且核心的概念。它由国际标准化组织(ISO)于1984年提出,旨在为不同厂商的设备和应…...
老旧android项目编译指南(持续更)
原因 编译了很多项目,找到了一些可观的解决办法 1. android studio里面的jdk版本切换 jdk版本切换在这里,一般安卓开发需要用到4个版本的jdk,jdk8, jdk11, jdk17, jdk21新版的android stuio是默认使用高版本的jdk,所以切换版本是很有必要的 2. 命令…...
测试金蝶云的OpenAPI
如何使用Postman测试K3Cloud的OpenAPI 1. 引言 在本篇博客中,我将带你逐步了解如何使用Postman测试和使用K3Cloud的OpenAPI。内容包括下载所需的SDK文件、配置文件、API调用及测试等步骤。让我们开始吧! 2. 下载所需的SDK文件 2.1 获取SDK 首先&…...
从零基础到通过考试
1. 学习资源与实践平台 使用Proving Grounds进行靶机练习 OSCP的备考过程中,实战练习占据了非常重要的地位。Proving Grounds(PG)是一个由Offensive Security提供的练习平台,拥有152个靶机,涵盖了从基础到进阶的多种…...
AI人工智能机器学习之神经网络
1、概要 本篇学习AI人工智能机器学习之神经网络,以MLPClassifier和MLPRegressor为例,从代码层面讲述最常用的神经网络模型MLP。 2、神经网络 - 简介 在 Scikit-learn 中,神经网络是通过 sklearn.neural_network 模块提供的。最常用的神经网…...
【原创】Open WebUI 本地部署
使用官网的默认部署,遇到不少的问题。比如白屏问题,其实需要修改几个参数即可。 其实在部署的时候有不少参数 WEBUI_AUTH False ENABLE_OPENAI_API 0 PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG C.UTF-8…...
基于SpringBoot的绿城郑州爱心公益网站设计与实现现(源码+SQL脚本+LW+部署讲解等)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【天地图-点线面最全功能】天地图实现功能:回显、绘制、编辑、删除任意点线面
实现效果图 实现功能 1. 回显点线面数据 2. 绘制点线面,保存可获取点线面数据 3. 编辑点线面,保存可获取最新编辑后的点线面数据 4. 删除任意点线面(解决删除按钮不能随元素位置变化(地图拖拽/放大缩小时)而变化问题-&…...
003 SpringBoot集成Kafka操作
4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1:高吞吐日志收集场景2:金融级事务消息…...
【工具篇】【深度解析:2025 AI视频工具的全面指南】
随着人工智能技术的飞速发展,AI视频工具已经成为内容创作者、营销人员、教育工作者以及普通用户的得力助手。这些工具不仅简化了视频制作流程,还提供了前所未有的创意可能性。本文将详细介绍各类AI视频工具,帮助你找到最适合自己需求的工具。 1. 文生视频工具 智谱清影:这…...
前端面试真题 2025最新版
文章目录 写在前文CSS怪异盒模型JS闭包闭包的形成闭包注意点 CSS选择器及优先级优先级 说说flex布局及相关属性Flex 容器相关属性:Flex 项目相关属性 响应式布局如何实现是否用过tailwindcss,有哪些好处好处缺点 说说对象的 prototype属性及原型说说 pro…...
数据结构课程设计(java实现)---九宫格游戏,也称幻方
【问题描述】 九宫格,一款数字游戏,起源于河图洛书,与洛书是中国古代流传下来的两幅神秘图案,历来被认为是河洛文化的滥觞,中华文明的源头,被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大…...
一文掌握Charles抓包工具的详细使用
Charles是一款强大的HTTP代理/HTTP监视器/反向代理工具,广泛用于开发和测试网络应用程序。在爬虫开发中,Charles可以帮助开发者拦截、查看和修改HTTP/HTTPS请求和响应,从而更好地理解网络通信过程,分析和调试爬虫程序。本文将详细介绍Charles的安装、配置、基本使用方法以及…...
Ollama下载安装+本地部署DeepSeek+UI可视化+搭建个人知识库——详解!(Windows版本)
目录 1️⃣下载和安装Ollama 1. 🥇官网下载安装包 2. 🥈安装Ollama 3.🥉配置Ollama环境变量 4、🎉验证Ollama 2️⃣本地部署DeepSeek 1. 选择模型并下载 2. 验证和使用DeepSeek 3️⃣使用可视化工具 1. Chrome插件-Page …...
Rk3568驱动开发_点亮led灯(手动挡)_5
1.MMU简介 完成虚拟空间到物理空间的映射 内存保护设立存储器的访问权限,设置虚拟存储空间的缓冲特性 stm32点灯可以直接操作寄存器,但是linux点灯不能直接访问寄存器,linux会使能mmu linux中操作的都是虚拟地址,要想访问物理地…...
【服务治理中间件】consul介绍和基本原理
目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理ÿ…...
Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上
Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上 1、环境介绍 QT版本:5.15.1 待移植环境: jetson nano 系列开发板 aarch64架构(arm64) 编译环境: 虚拟机Ubuntu18.04(x86_64) 2、…...
对话Stack Overflow,OceanBase CTO 杨传辉谈分布式数据库的“前世今生”
近日, OceanBase CTO 杨传辉受邀出席全球知名开发者论坛 Stack Overflow 的最新一期播客节目,与 Stack Overflow 高级内容创作官 Ryan Donovan 展开对话。双方围绕分布式数据库的可靠性、一致性保障、HTAP 架构以及 AI 时代分布式数据库的发展趋势等热点…...
ds回答-开源llm应用开发平台
以下是几个著名的开源 LLM 应用开发平台,涵盖不同场景和技术特点: 1. Dify 特点:低代码 / 无代码开发、支持 RAG 检索、Agent 智能体、模型管理、LLMOps 全流程优化。核心功能:可视化工作流编排、数百种模型兼容(如 GP…...
C++ Qt常见面试题(4):Qt事件过滤器
在 Qt 中,事件过滤器(Event Filter)提供了一种机制,可以拦截并处理对象的事件(如鼠标事件、键盘事件等),在事件到达目标对象之前对其进行预处理。事件过滤器通常用于以下场景: 捕获和处理特定的事件(如鼠标点击、按键等);对事件进行筛选或修改;实现全局的事件监听功…...
CF 109A.Lucky Sum of Digits(Java实现)
题目分析 给定一个值,判断这个值能否被4和7组成,如果能就输出最小的组合。不能就输出-1。 思路分析 由于是最小组合,即判断4能最多有多少个。但是如果一个值能完全被7整除,那就不需要4了,只用7组合的话位数会更短。(例…...
计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
生鲜行业智能化供应链解决方案技术白皮书
行业痛点与技术挑战 损耗控制难题 行业平均损耗率达18%-25%,需构建动态定价模型与智能分拣系统 冷链管理复杂度 全程温控数据采集点超过23个/车次,异常响应延迟需压缩至90秒内 供需预测偏差 传统模式预测准确率不足65%,亟需AI驱动需求预测体…...
《每天搞懂一道Hard》之数独终结者(LeetCode 37)
📌《每天搞懂一道Hard》之数独终结者(LeetCode 37) 🔗原题链接:https://leetcode.com/problems/sudoku-solver/ 今天我们来解剖一个经典回溯算法问题——数独求解器!这道题在算法面试中出现频率高达35%&a…...
论文笔记-NeurIPS2017-DropoutNet
论文笔记-NeurIPS2017-DropoutNet: Addressing Cold Start in Recommender Systems DropoutNet:解决推荐系统中的冷启动问题摘要1.引言2.前言3.方法3.1模型架构3.2冷启动训练3.3推荐 4.实验4.1实验设置4.2在CiteULike上的实验结果4.2.1 Dropout率的影响4.2.2 实验结…...
【后端开发面试题】每日 3 题(四)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html 📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家~ ❤️如果有收获的话&#x…...
使用AoT让.NetFramework4.7.2程序调用.Net8编写的库
1、创建.Net8的库,双击解决方案中的项目,修改如下,启用AoT: <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><OutputType>Library</OutputType><PublishAot>true</PublishAot>&…...
c++中的静态多态和动态多态简介
在 C 中,多态性(Polymorphism) 分为 静态多态(Static Polymorphism) 和 动态多态(Dynamic Polymorphism),二者通过不同的机制实现代码的灵活性。以下是详细对比和核心要点࿱…...
FastExcel与Reactor响应式编程深度集成技术解析
一、技术融合背景与核心价值 在2025年企业级应用开发中,大规模异步Excel处理与响应式系统架构的结合已成为技术刚需。FastExcel与Reactor的整合方案,通过以下技术协同实现突破性性能: 内存效率革命:FastExcel的流式字节操作与Re…...
【MySQL篇】数据类型
目录 前言: 1,数据类型的分类 编辑 2 ,数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float类型 2.3.2 decimal类型 3,字符串类型 3.1 char 3.2 varchar 3.3 char与varchar的比较 3.4日期和时间类型 3.5 …...
haclon固定相机位标定
什么是标定? 工业应用中相机拍到一个mark点的坐标为C1(Cx,Cy),C1点对应的龙门架/机械手等执行端对应的坐标是多少? 标定就是解决这个问题,如相机拍到一个点坐标C1(Cx,Cy),…...
Token相关设计
文章目录 1. 双Token 机制概述1.1 访问令牌(Access Token)1.2 刷新令牌(Refresh Token) 2. 双Token 认证流程3. Spring Boot 具体实现3.1 生成 Token(使用 JWT)3.2 解析 Token3.3 登录接口(返回…...
vue3:四嵌套路由的实现
一、前言 1、嵌套路由的含义 嵌套路由的核心思想是:在某个路由的组件内部,可以定义子路由,这些子路由会渲染在父路由组件的特定位置(通常是 <router-view> 标签所在的位置)。通过嵌套路由,你可以实…...
在 Element Plus 的 <el-select> 组件中,如果需要将 <el-option> 的默认值设置为 null。 用于枚举传值
文章目录 引言轻松实现 `<el-option>` 的默认值为 `null`I 实现方式监听清空事件 【推荐】使用 v-model 绑定 null添加一个值为 null 的选项处理 null 值的显示引言 背景:接口签名规则要求空串参与,空对象不参与签名计算 // 空字符串“” 参与签名组串,null不参与签…...
List(3)
前言 上一节我们讲解了list主要接口的模拟实现,本节也是list的最后一节,我们会对list的模拟实现进行收尾,并且讲解list中的迭代器失效的情况,那么废话不多说,我们正式进入今天的学习 list的迭代器失效 之前在讲解vec…...
算法-二叉树篇23-二叉搜索树中的插入操作
二叉搜索树中的插入操作 力扣题目链接 题目描述 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同…...
React底层常见的设计模式
在React中,常见的设计模式为开发者提供了结构化和可重用的解决方案,有助于提高代码的可维护性和可扩展性。以下是对React中几种常见设计模式的详细解析,并附上示例代码和注释: 1. 容器组件与展示组件模式(Container/P…...
【PHP脚本语言详解】为什么直接访问PHP文件会显示空白?从错误示例到正确执行!
前言 作为一名开发者,你是否曾经遇到过这样的问题:写了一个PHP脚本,放到服务器根目录后,直接通过file:///路径访问却显示空白页面?而换成http://localhost却能正常显示?这篇文章将带你深入理解PHP脚本语言…...
小程序性能优化-预加载
在微信小程序中,数据预加载是提升用户体验的重要优化手段。以下是处理数据预加载的完整方案: 一、预加载的适用场景 跳转页面前的数据准备 如从列表页进入详情页前,提前加载详情数据首屏加载后的空闲时间 在首页加载完成后,预加载…...
Docker 数据卷管理及优化
Docker 数据卷是一个可供容器使用的特殊目录,它绕过了容器的文件系统,直接将数据存储在宿主机上。通过数据卷,可以实现数据的持久化、共享以及独立于容器生命周期的管理。 1.1 为什么要用数据卷 Docker 分层文件系统的特点 性能差ÿ…...
MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享
一、背景 在文档搜索场景中,高效精准的搜索功能至关重要,能提升检索效率,为用户提供精准、快速的信息获取体验,提高工作效率。在文档管理系统里,全文搜索是非常重要的功能之一。随着文档数量增长,如何快速…...
C#内置委托(Action)(Func)
概述 在 C# 中,委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。C# 提供了一些内置委托,使得开发者可以更方便地使用委托功能,无需手动定义委托类型。本文将详细介绍 Action 和 Func 这两个常用的内置委托。 A…...
OpenCV计算摄影学(3)CUDA 图像去噪函数fastNlMeansDenoising()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用非局部均值去噪算法(Non-local Means Denoising algorithm)执行图像去噪,该算法来源于 http://www.ipol.…...
Kafka生产者相关
windows中kafka集群部署示例-CSDN博客 先启动集群或者单机也OK 引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.9.0</version></dependency>关于主题创建 理论…...