图像增强技术
一、目的
通过本实验加深对数字图像增强操作的理解,熟悉MATLAB中的有关函数;了解直方图均衡化和卷积滤波的原理;熟悉低通和高通滤波模板的构造方法。
二、实验内容与设计思想
1、观察实验结果可看出,
原图像 I的对比度较低,暗部和亮部的细节不够明显,某些区域可能显得模糊或缺乏细节。处理后的图像 J对比度显著提高,细节更加丰富,尤其是边缘和纹理部分。
初始图像:
新图像:
原因:直方图均衡化可能会导致颜色的变化,因为它是对每个颜色通道分别进行处理的。某些颜色可能会变得更饱和或更淡。
I、J的直方图:
原图I的直方图集中在某些灰度级上,表明图像的对比度较低,直方图的峰值较高,而其他区域的值较低。
处理后的图像J更均匀地分布在所有灰度级上,且直方图的峰值降低,而其他区域的值会增加,整体分布更加均匀。
2、从输出结果可以看出,原始图像(左图)具有丰富的细节和鲜明的边缘,角色的表情、衣服的纹理以及背景的云朵都非常清晰和锐利,色彩鲜艳,对比度高。经过均值滤波处理后的图像(右图)则显得更加平滑和柔和,细节有所减弱,特别是角色的脸部表情、衣服的纹理和背景的云朵等细节变得较为模糊,边缘不再那么鲜明。此外,滤波后的图像色彩稍微变暗,对比度略低,整体色调趋于柔和,噪点也被有效去除,图像表面更加光滑。总的来说,均值滤波器成功地实现了图像的平滑处理,减少了噪点,但也带来了一些细节丢失和对比度下降的副作用。
- 3x3 均值滤波器对图像进行平滑处理,但影响范围较小。图像的细节会有所减弱,但不会像 特别明显。边缘依然相对清晰,但噪点会被一定程度地去除。
- 加权均值滤波器对中心像素赋予更大的权重,因此中心像素的影响更大。这种滤波器在平滑图像的同时,保留了更多的细节和边缘信息。相比于普通的均值滤波器,这种加权均值滤波器在保持图像细节方面表现更好。
- 低通滤波器的主要作用是平滑图像,减少高频成分(如噪点和细节),使图像变得柔和。常见的低通滤波器有均值滤波器和高斯滤波器。
- 高通滤波器的主要作用是增强图像的高频成分(如边缘和细节),使图像变得锐利。常见的高通滤波器有拉普拉斯滤波器和Sobel滤波器。
高通滤波和低通滤波的差别:
低通滤波器:平滑图像,减少高频成分(如噪点和细节),使图像变得柔和,图像的细节减弱,边缘变得模糊,噪点减少。
构造规律:低通滤波器的权重分布通常是均匀的(如均值滤波器)或呈高斯分布(如高斯滤波器),中心像素的权重较大,周围像素的权重逐渐减小。
高通滤波器:增强图像的高频成分(如边缘和细节),使图像变得锐利。图像的边缘和细节更加突出,但可能会引入一些噪点。
构造规律:高通滤波器的权重分布通常是中心像素的权重为正,周围像素的权重为负(如拉普拉斯滤波器),或者通过两个不同标准差的高斯滤波器相减(如高斯差分滤波器)。
3、使用C/C++编程实现直方图均衡化函数(histeq)和卷积滤波函数(imfilter)
主要步骤:
读取图像:使用cv::imread函数读取图像。
直方图均衡化:转换为灰度图,再使用cv::equalizeHist函数进行直方图均衡化。
卷积滤波:转换为灰度图,定义一个卷积核,再使用cv::filter2D函数进行卷积滤波。
显示图像:使用cv::imshow函数显示图像。
主要代码结构:
头文件和命名空间:引入必要的OpenCV头文件,并使用cv命名空间。
直方图均衡化函数:定义histeq函数,实现直方图均衡化。
卷积滤波函数:定义imfilter函数,实现卷积滤波。
主函数:读取图像,调用上述函数处理图像,调整图像大小,显示图像。
原始图像:
直方图均衡化:
卷积滤波:
三、使用环境
Matlab、VS、opencv
四、小结
1、问题:在调用cv::imread函数读取图像时,返回的图像矩阵为空。
解决过程:检查图像路径,并查看OpenCV库是否正确安装。
2、问题: 图片在显示时只显示了一小部分,而不是整个图片。
解决过程:使用resizeWindow函数调整窗口大小,使其适应图片的实际尺寸。
3、问题: 窗口标题显示乱码
原因分析:系统的默认编码与程序中使用的编码不一致。
解决方法:使用UTF-8编码保存源代码文件。
4、实验体会和收获
通过这次实验,我对OpenCV库有了更深入的了解,掌握了如何使用OpenCV读取、处理和显示图片的基本操作,了解了灰度映射的基本概念和不同类型的灰度映射方法,包括线性映射、分段线性映射、指数型映射和S型曲线映射,也提高了我的问题解决能力。实验中遇到的问题和解决过程让我更加深刻地理解了编程中的细节和注意事项。
源代码附件
3、
#include <opencv2/opencv.hpp>
#include <iostream>// 直方图均衡化函数
cv::Mat histeq(const cv::Mat& input) {cv::Mat gray;if (input.channels() == 3) {cv::cvtColor(input, gray, cv::COLOR_BGR2GRAY);}else {gray = input.clone();}cv::Mat output;cv::equalizeHist(gray, output);return output;
}// 卷积滤波函数
cv::Mat imfilter(const cv::Mat& input, const cv::Mat& kernel) {cv::Mat gray;if (input.channels() == 3) {cv::cvtColor(input, gray, cv::COLOR_BGR2GRAY);}else {gray = input.clone();}cv::Mat output;cv::filter2D(gray, output, -1, kernel);return output;
}int main() {cv::Mat img = cv::imread("C:/Users/吴倩/Pictures/壁纸/pexels-emil-lin-770270.jpg");if (img.empty()) {std::cerr << "无法打开或找到图像" << std::endl;return -1;}cv::Mat eqImg = histeq(img);cv::Mat kernel = (cv::Mat_<float>(3, 3) << 1 / 9.0, 1 / 9.0, 1 / 9.0,1 / 9.0, 1 / 9.0, 1 / 9.0,1 / 9.0, 1 / 9.0, 1 / 9.0);cv::Mat filteredImg = imfilter(img, kernel);cv::Mat resizedImg, resizedEqImg, resizedFilteredImg;float scale = 0.5; cv::resize(img, resizedImg, cv::Size(), scale, scale);cv::resize(eqImg, resizedEqImg, cv::Size(), scale, scale);cv::resize(filteredImg, resizedFilteredImg, cv::Size(), scale, scale);cv::imshow("原始图像", resizedImg);cv::imshow("直方图均衡化", resizedEqImg);cv::imshow("卷积滤波", resizedFilteredImg);cv::waitKey(0);return 0;
}4、
#include <opencv2/opencv.hpp>
#include <iostream>
#include <cmath>using namespace cv;
using namespace std;// 线性映射
float linearMap(float s) {return s;
}// 分段线性映射
float piecewiseLinearMap(float s) {if (s < 100)return s * 0.5;else if (s < 200)return (s - 100) * 2.0 + 50;elsereturn (s - 200) * 0.5 + 150;
}// 指数型映射
float exponentialMap(float s) {return 255 * pow(s / 255.0, 0.5);
}// S型曲线映射
float sigmoidalMap(float s) {return 255 / (1 + exp(-0.05 * (s - 128)));
}// 应用灰度映射
Mat applyGrayScaleMapping(const Mat& inputImage, float (*mappingFunc)(float)) {Mat outputImage(inputImage.size(), inputImage.type());for (int y = 0; y < inputImage.rows; y++) {for (int x = 0; x < inputImage.cols; x++) {float originalIntensity = static_cast<float>(inputImage.at<uchar>(y, x));float newIntensity = mappingFunc(originalIntensity);outputImage.at<uchar>(y, x) = static_cast<uchar>(newIntensity);}}return outputImage;
}// 调整图片大小
Mat resizeImage(const Mat& inputImage, float scale) {int newWidth = static_cast<int>(inputImage.cols * scale);int newHeight = static_cast<int>(inputImage.rows * scale);Mat resizedImage;resize(inputImage, resizedImage, Size(newWidth, newHeight));return resizedImage;
}int main() {// 读取图片Mat inputImage = imread("C:/Users/吴倩/Pictures/壁纸/pexels-emil-lin-770270.jpg");if (inputImage.empty()) {cout << "无法打开图片" << endl;return -1;}// 转换为灰度图Mat grayImage;cvtColor(inputImage, grayImage, COLOR_BGR2GRAY);// 应用四种不同的灰度映射Mat linearMappedImage = applyGrayScaleMapping(grayImage, linearMap);Mat piecewiseLinearMappedImage = applyGrayScaleMapping(grayImage, piecewiseLinearMap);Mat exponentialMappedImage = applyGrayScaleMapping(grayImage, exponentialMap);Mat sigmoidalMappedImage = applyGrayScaleMapping(grayImage, sigmoidalMap);// 调整图片大小到40%float scale = 0.4;inputImage = resizeImage(inputImage, scale);grayImage = resizeImage(grayImage, scale);linearMappedImage = resizeImage(linearMappedImage, scale);piecewiseLinearMappedImage = resizeImage(piecewiseLinearMappedImage, scale);exponentialMappedImage = resizeImage(exponentialMappedImage, scale);sigmoidalMappedImage = resizeImage(sigmoidalMappedImage, scale);// 保存结果imwrite("线性映射.png", linearMappedImage);imwrite("分段线性映射.png", piecewiseLinearMappedImage);imwrite("指数型映射.png", exponentialMappedImage);imwrite("S型曲线映射.png", sigmoidalMappedImage);// 创建窗口并设置中文标题namedWindow("原始图片", WINDOW_NORMAL);namedWindow("灰度图片", WINDOW_NORMAL);namedWindow("线性映射", WINDOW_NORMAL);namedWindow("分段线性映射", WINDOW_NORMAL);namedWindow("指数型映射", WINDOW_NORMAL);namedWindow("S型曲线映射", WINDOW_NORMAL);// 显示结果imshow("原始图片", inputImage);imshow("灰度图片", grayImage);imshow("线性映射", linearMappedImage);imshow("分段线性映射", piecewiseLinearMappedImage);imshow("指数型映射", exponentialMappedImage);imshow("S型曲线映射", sigmoidalMappedImage);// 输出中文信息cout << "图片处理完成,按任意键退出" << endl;waitKey(0);return 0;
}
相关文章:
图像增强技术
一、目的 通过本实验加深对数字图像增强操作的理解,熟悉MATLAB中的有关函数;了解直方图均衡化和卷积滤波的原理;熟悉低通和高通滤波模板的构造方法。 二、实验内容与设计思想 1、观察实验结果可看出, 原图像 I的对比度较低&…...
【Java学习笔记】多态参数
多态参数 应用:方法定义的形参类型为父类类型,实参允许为子类类型 // 父类 package polyparemeter;public class employee {private String name;private double salary;//构造器public employee(){}public employee(String name, double salary) {thi…...
计算机网络核心技术解析:从基础架构到应用实践
计算机网络作为现代信息社会的基石,承载着全球数据交换与资源共享的核心功能。本文将从网络基础架构、核心协议、分层模型到实际应用场景,全面解析计算机网络的核心技术,并结合行业最新趋势,为读者构建系统的知识体系。 一、计算机…...
LiveData:Android响应式编程的核心利器
LiveData是一种可观察的数据持有类,用于在Android应用中实现数据的响应式编程。它具有以下特点和作用: 特点 生命周期感知:LiveData能够感知与其关联的组件(如Activity、Fragment)的生命周期状态。只有当组件处于活跃状态(如Activity处于RESUMED状态)时,LiveData才会将…...
【LeeCode】1.两数之和
文章目录 1. 暴力求解2. 哈希表具体过程1. nums [2, 7, 11, 15],target 9:2. nums [11, 15, 2, 7], target 9 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数ÿ…...
继承关系下创建对象的具体流程
public class Person {int x initX(); // 显式初始化:调用方法 initX()public Person() {System.out.println("Parent 构造器执行, x " x);}int initX() {System.out.println("initX() 被调用了");return 100;} }public class Child extends…...
基于世界土壤数据库(HWSD)的中国土壤数据集(v1.1)(2009)
时间分辨率:年共享方式:开放获取数据大小:156.47 MB数据时间范围:2009元数据更新时间:2020-03-26 数据集摘要 数据来源于联合国粮农组织(FAO)和维也纳国际应用系统研究所(IIASA)所构建的世界土…...
mac M2能安装的虚拟机和linux系统系统
目前网上的资料大多错误,能支持M2的很少。 推荐安装的改造过的centos7也无法进行yum操作,建议安装centos8 VMware Fusion下载地址: https://pan.baidu.com/s/14v3Dy83nuLr2xOy_qf0Jvw 提取码: jri4 centos8下载地址: https://…...
212. 单词搜索 II【 力扣(LeetCode) 】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 212. 单词搜索 II 一、题目描述 给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母…...
【软考-高级】【信息系统项目管理师】论文写作注意事项及2014年至2024年历年论文题目汇总
论文写作注意事项 要求 字数要求:2500字以内(2024年超过2500字,在线答题系统无法输入)时长要求:2小时(大多数人不够用)内容要求: 必须响应子标题,如子标题要求写如何优…...
MySQL数据库表的约束
目录 1.null属性 2.默认值约束(default) 3.comment 4.zerofill 5.主键(primary key) 6.自增长(auto_increment) 7.唯一键(unique) 编辑 8.外键 约束是为了安全插入数据&a…...
硅基计划2.0 学习总结 壹 Java初阶
一、初见Java (1)Java简介 首先不得不承认Java是一门优秀的程序设计语言 其系列的计算机软件和跨平台体系包括国内的生态链完善是C/C语言难以弥补的 (2)Java SE 全称Java Standard Edition,是Java体系的基础 &am…...
逆向破解:x64dbg
文章目录 一、CPU窗口1、反汇编窗口2、寄存器窗口3、栈地址窗口4、十六进制数据窗口5、堆栈参数解析窗口 二、常用快捷键三、字符串检索功能四、调试功能1、上一步 一、CPU窗口 1、反汇编窗口 2、寄存器窗口 寄存器窗口用于显示和解释当前线程环境下CPU寄存器的各种状态值和内…...
从MCU到SoC的开发思维转变
目录 1、硬件设计 2、软件开发 3、调试与测试 4、电源管理 微控制器单元(MCU)和系统级芯片(SoC)是嵌入式开发中最常见的两种处理器类型。MCU以其简单、低功耗的特点,广泛应用于特定控制任务;而SoC凭借强…...
3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】
一、引言 3D高斯泼溅(3DGS)是一种新兴的三维场景表示方法,可以生成高质量的场景重建结果。然而,要查看这些重建场景,需要特殊的高斯渲染器。大多数3D处理软件并不兼容3D高斯分布模型,但它们通常都兼容点云文件。 3DGS-to-PC项目提…...
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3
互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3 场景背景 面试场景设定在一家大型互联网公司,面试官为拥有10年以上经验的技术总监,专注于高并发、高可用系统的架构设计。候选人郑薪苦是一名技术潜力十足的程序员,擅…...
ABP-Book Store Application中文讲解 - 前期准备 - Part 3:Acme.BookStore项目模块详解
ABP-Book Store Application中文讲解-汇总-CSDN博客 本文通过对Acme.BookStore项目各模块的详解,让大家知道每个project用来干什么的,他们之间的引用关系是什么,同时知道怎样添加新的功能模块。 Acme.Bookstore 是主要 ABP Studio 模块的主…...
智慧城市综合运营管理系统Axure原型
这款Axure原型的设计理念紧紧围绕城市管理者的需求展开。它旨在打破传统城市管理中信息孤岛的局面,通过统一标准接入各类业务系统,实现城市运营管理信息资源的全面整合与共享。以城市管理者为中心,为其提供一个直观、便捷、高效的协同服务平台…...
Java中进阶并发编程
第一章、并发编程的挑战 并发和并行:指多线程或多进程 线程的本质:操作系统能够进行运算调度的最小单位,是进程(Process)中的实际工作单元 进程的本质:操作系统进行资源分配和调度的基本单位,…...
cursor 出现问题 为客户解决问题
文档出自:https://www.kdocs.cn/l/cp5GpLHAWc0p...
【氮化镓】GaN在不同电子能量损失的SHI辐射下的损伤
该文的主要发现和结论如下: GaN的再结晶特性 :GaN在离子撞击区域具有较高的再结晶倾向,这导致其形成永久损伤的阈值较高。在所有研究的电子能量损失 regime 下,GaN都表现出这种倾向,但在电子能量损失增加时,其效率会降低,尤其是在材料发生解离并形成N₂气泡时。 能量损失…...
用drawdb.app可视化创建mysql关系表
平时自己建表,没有可视化图形参考 为了便于理解,用drwadb画mysql关系表 drawDB | Online database diagram editor and SQL generator...
模型上下文协议(MCP):AI的“万能插座”
~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、MCP解决什么问题? \quad 在过去的几年中,AI大模型快速发展,从横空出世的GPT到“AI界拼多多”DeepSeek&am…...
初识 Pandas:Python 数据分析的利器
在数据分析、数据清洗和可视化等领域,Python 无疑是最受欢迎的语言之一,而在 Python 的数据处理生态中,Pandas 是最核心、最基础的库之一。如果你接触数据分析、机器学习、金融建模,或者只是想处理一些 Excel 表格,那么…...
Python教程(四)参数提取pymysql
Python(四) 本系列其他教程: Python教程(二):函数、异常、模块&包、文件读取、常用模块 Python教程(三):类&对象、闭包、装饰器、类型注解 Python教程(三):类&对象、闭包、装饰器、类型注解、…...
Halcon案例(一):C#联合Halcon识别路由器上的散热孔
本案例分3部分 识别效果,分别显示识别前后识别后;代码展示,分别是Halcon源码和Halcon转为C#的代码代码解释(解释在源码中) 原图如下: 处理后的图像: Halcon源码: *读取一张图像 read_image (Image, progres)*获取图像大小 get_image_size (Image, Width, Height)*关…...
SC5061串口设备联网服务器,4路RS-232,4路422/485串行接口
串口设备联网服务器,简称串口服务器。能够将RS-232/485/422串口设备联入TCP/IP网络,实现RS-232/485/422串口与TCP/IP网络接口的数据双向传输,使得串口设备能够具备联网功能,根据串口数量的不同,可以分为单串口、两串口…...
谈AI/OT 的融合
过去的十几年间,工业界讨论最多的话题之一就是IT/OT 融合,现在,我们不仅要实现IT/OT 的融合,更要面向AI/OT 的融合。看起来不太靠谱,却留给我们无限的想象空间。OT 领域的专家们不要再当“九斤老太”,指责这…...
RAGFlow 初步尝试 (01)
1. 起因, 目的: 简单尝试一下。 2. 先看效果 3. 过程: 目的: 研究 RAG 的实现过程。 实用目的: 对于一本电子书, pdf,我在读书的时候,可以问一写些问题。对一个 github 项目,可以迅速理解文件的关系。…...
Linux 服务器用 SSH 拉取多个 Git 工程
在一台 Linux 服务器上用 SSH 拉取两个 Git 工程,而这两个工程对应的是 不同的 Git 账号(SSH Key),做法: 使用 SSH Config 配置多个 Git 账号 场景假设: 工程 A 的仓库地址:gitgithub.com:com…...
测试文章标题01
模型上下文协议(Model Context Protocol, MCP)深度解析 一、MCP的核心概念 模型上下文协议(Model Context Protocol, MCP)是一种用于规范机器学习模型与外部环境交互的标准化框架。其核心目标是通过定义统一的接口和数据格式&am…...
如何禁止chrome自动更新
百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功: 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…...
【C++重载操作符与转换】构造函数和复制控制
目录 一、构造函数:对象的初始化引擎 1.1 构造函数的定义与分类 1.2 初始化列表:高效且安全的初始化方式 1.3 显式构造函数与类型安全 二、复制控制:管理对象的生命周期 2.1 复制构造函数:深拷贝的核心 2.2 赋值运算符重载…...
CATIA高效工作指南——常规配置篇(二)
一、结构树(Specification Tree)操作技巧精讲 结构树是CATIA设计中记录模型历史与逻辑关系的核心模块,其高效管理直接影响设计效率。本节从基础操作到高级技巧进行系统梳理。 1.1 结构树激活与移动 激活方式: 白线…...
神经生物学+图论双buff,揭示大脑语言系统的拓扑结构
摘要 近年来,神经影像数据分析的进展促进了大脑网络整合中适应性变化的表征。本研究提出了一种融合知识驱动与数据驱动的独特方法,为更精确地理解这些变化提供了新思路。通过运用图网络分析,并结合特定领域脑网络系统的现有神经生物学知识&am…...
Kotlin 懒初始化值
Kotlin 懒初始化值:深入理解 lateinit 与 by lazy 在 Kotlin 开发中,懒初始化(Lazy Initialization) 是一种常见的优化技巧,它允许我们将对象的初始化延迟到真正需要使用时再执行。Kotlin 提供了两种核心机制来实现懒…...
高速系统设计实例设计分析
在上几章的内容中,我们从纯粹高速信号的理论分析,到 Cadence 工具的具体使用都做了详细的讲解和介绍。相信读者通过前面章节的学习,已经对高速系统的设计理念及 Cadence 相应的设计流程和工具有了一个基本的认识。但是,对于高速电…...
数据结构与算法学习-JavaScript的Array.prototype.reduce()方法
一、语法 array.reduce(callbackfn, initialValue);callbackfn (accumulator, currentValue, currentIndex, array) > {// 回调逻辑 } callbackFn 为数组中每个元素执行的函数。 其返回值将作为下一次调用 callbackFn 时的 accumulator 参数。对于最后一次调用,…...
[Java][Leetcode simple] 189. 轮转数组
借助辅助数组 借助一个辅助数组tmp保存后面k个元素然后逆序循环,使用数组前面n-k个元素覆盖最后到后面最后把前k个元素从tmp中拿回来public void rotate(int[] nums, int k) {int len nums.length;k k % len;int[] Ra new int[len];int cnt 0;for (int i len-k…...
Hadoop 的代理用户(Proxy User) 功能解释
在$HADOOP_HOME/etc/hadoop下的core-site.xml 配置里,可以新增hadoop集群的代理用户。 在集成配置中,会经常用到。它属于 Hadoop 安全机制的一部分。 以下是对该配置效果的详细说明及示例: 配置效果 <!-- 允许用户 hadoop 从主机 hadoop…...
day06_java中的流程控制语句
流程控制语句 Java提供了一些流程控制语句,来控制程序的执行流程 顺序结构 任何编程语言中最常见的程序结构就是顺序结构顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转如果main方法的多行代码之间没有任何流程控制,则程序总是…...
机器学习实战:归一化与标准化的选择指南
在机器学习实战中——是否需要归一化(Normalization)或标准化(Standardization),取决于所使用的模型类型。 ✅ LightGBM / XGBoost 是否需要归一化或标准化? 不需要。 🔧 原因: L…...
【内蒙古】《内蒙古自治区本级政务信息化建设项目预算支出标准(试行)》(内财预〔2024〕1449号)-费用标准解读系列
内蒙古自治区政务服务与数据管理局在2024年11月29日发布了《内蒙古自治区本级政务信息化建设项目预算支出标准(试行)》(内财预〔2024〕1449号)。该文件适用于自治区本级各部门、单位非涉密政务信息化建设项目(以下简称建设项目)经费的预算编制、审核。下…...
文本数据可视化
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 原理 操作步骤 图像展示 【实验目的】 了解什么是文本可视化 掌握文本可视化的相关技术 文本信息的提取和可视表达 本次实验是将某一文本进行可视化生成词云图片 尝试构造文本指纹 【实验原理】…...
qt命名空间演示
#ifndef CIR_H #define CIR_Hnamespace cir {double PI3.141592653;//获取圆行周长double getLenthOfCircle(double radius){return 2*PI*radius;}//获取圆形面积double getAreaOfCircle(double radius){return PI*radius*radius;}} #endif // CIR_H#include <iostream> …...
Android学习总结之布局篇
一、大厂面试高频布局真题解析 1. ConstraintLayout vs RelativeLayout 深度对比 真题问法: "为什么说 ConstraintLayout 是 RelativeLayout 的替代方案?两者在布局原理、性能、复杂场景处理上有什么核心区别?" 核心考点解析&am…...
星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)
华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。 看…...
RNN(循环神经网络)原理与结构
1 RNN(循环神经网络)原理与结构 循环神经网络(Recurrent Neural Network, RNN)是一类专门用于处理序列数据(如时间序列、文本、语音等)的深度学习模型。与传统的前馈神经网络不同,RNN在每个时间…...
Claude深度解析:从技术原理到实战应用的全栈指南
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言:AI编程新纪元中的Claude 在生成式AI技术爆发的2024年,Anthropic的Claude系列模型以卓越的长文本处理能力和精确的代码生成质量,正在重塑程序员的开发范式。当开发者…...
9.渐入佳境 -- 套接字的多种可选项
前言 套接字具有多种特性,这些特性可通过可选项更改。本章将介绍更改套接字可选项的方法,并以此为基础进一步观察套接字内部。 一、套接字可选项和I/O缓冲大小 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是…...