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

实验4 图像空间滤波

1. 实验目的

①掌握图像空间滤波的主要原理与方法;
②掌握图像边缘提取的主要原理和方法;
③了解空间滤波在图像处理和机器学习中的应用。

2. 实验内容

①调用 Matlab / Python +OpenCV中的函数,实现均值滤波、高斯滤波、中值滤波等。
②调用 Matlab /Python + OpenCV中的函数,实现边缘提取(Sobel、Robert、Laplacian、Prewitt、Canny等)。
③在Matlab/Python +OpenCV中,编程实现均值滤波,高斯滤波和中值滤波。

3. 实验过程

3.1 图像添加噪声

使用Matlab/Python +OpenCV中的加噪声函数,分别给同一幅图像中加入不同比例的高斯噪声、椒盐噪声、泊松噪声,并在图像中添加直线等干扰。
① 请填写以下函数对应的参数说明:

函数名函数功能参数说明
J = imnoise(I, ‘gaussian’, m, v)添加高斯噪声I:输入图像。 'gaussian':指定添加高斯噪声。 m:高斯分布的均值。 v:高斯分布的方差
J = imnoise(I, ‘salt & pepper’, d)添加椒盐噪声I:输入图像。 'salt & pepper':指定添加椒盐噪声。 d:控制噪声密度的参数,取值范围为0到1之间,表示噪声像素占总像素数的比例。
J = imnoise(I, ‘poisson’)添加泊松噪声I:输入图像。 'poisson':指定添加泊松噪声。
② 源代码及实验结果
%实验4-1 为图像添加噪声
% 读取图像
image = imread('lena.png');
image_gray = rgb2gray(image);% 添加高斯噪声
gaussian_noise_image = imnoise(image_gray, 'gaussian', 0, 0.01);% 添加椒盐噪声
salt_pepper_noise_image = imnoise(image_gray, 'salt & pepper', 0.05);%泊松
% 将图像转换为双精度类型
image_gray_double = im2double(image_gray);
% 计算泊松噪声参数
lambda = 0.1 * mean(image_gray_double(:)); % 泊松分布的平均值
% 生成泊松噪声
poisson_noise = poissrnd(lambda, size(image_gray_double));
% 添加泊松噪声
poisson_noise_image_double = image_gray_double + poisson_noise;
% 将图像还原为8位无符号整数类型
poisson_noise_image = im2uint8(poisson_noise_image_double);% 添加直线干扰
line_interference_image = insertShape(image_gray, 'Line', [1 1 size(image_gray,2) size(image_gray,2)], 'Color', 'white', 'LineWidth', 1);% 显示原始图像和添加不同噪声的图像
figure;
subplot(2, 2, 1);
imshow(image_gray);
title('原始图像');
subplot(2, 2, 2);
imshow(gaussian_noise_image);
title('高斯噪声');
subplot(2, 2, 3);
imshow(salt_pepper_noise_image);
title('椒盐噪声');
subplot(2, 2, 4);
imshow(poisson_noise_image);
title('泊松噪声');% 显示添加直线干扰后的图像
figure;
imshow(line_interference_image);
title('直线干扰');

在这里插入图片描述
在这里插入图片描述
③ 结果对比与分析(观察对比不同类型、参数噪声的特点)

高斯噪声(Gaussian Noise):
特点:高斯噪声是一种服从高斯分布(也称为正态分布)的随机噪声。它是一种连续性的噪声,呈现为图像中的随机亮度变化。
形成原因:高斯噪声可以由许多因素引起,例如电子设备的电子噪声、图像传感器的固有噪声等。
效果:高斯噪声对图像的影响主要体现在图像的平滑程度上,它会使图像的细节模糊化。
椒盐噪声(Salt and Pepper Noise):
特点:椒盐噪声是一种随机的、突发的噪声,表现为图像中出现亮白或暗黑的孤立像素点。
形成原因:椒盐噪声可能是因为信号损坏或传输错误导致像素值发生突变引起的。
效果:椒盐噪声会在图像中引入明显的孤立像素点,使图像出现突然的亮点或暗点。
泊松噪声(Poisson Noise):
特点:泊松噪声是由于光子计数的随机性导致的一种噪声。它在低光条件下的图像中更为常见。
形成原因:泊松噪声主要是由于光照条件下的随机光子计数引起的,例如低照度图像中的光子计数变化。
效果:泊松噪声会导致图像的亮度变化和细节的模糊,尤其在低光条件下会更加明显。

3.2 图像平滑

使用 Matlab/Python +OpenCV中的相关函数,对3.1中加噪的图像进行均值滤波、高斯滤波和中值滤波。
① 请填写以下函数对应的参数说明:

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

② 源代码及实验结果(添加必要注释)

%实验4-2 图像去除噪声实验
% 读取图像
image = imread('lena.png');
image_gray = rgb2gray(image);% 添加高斯噪声
gaussian_noise_image = imnoise(image_gray, 'gaussian', 0, 0.01);% 中值滤波
median_filtered = medfilt2(gaussian_noise_image, [3 3]);
% 均值滤波
mean_filtered = imfilter(gaussian_noise_image, fspecial('average', [3 3]));% 高斯滤波
gaussian_filtered = imfilter(gaussian_noise_image, fspecial('gaussian', [4 4], 2));% 显示原始图像和滤波后的图像
figure;
subplot(2, 2, 1), imshow(gaussian_noise_image), title('原始图像');
subplot(2, 2, 2), imshow(mean_filtered), title('均值滤波');
subplot(2, 2, 3), imshow(gaussian_filtered), title('高斯滤波');
subplot(2, 2, 4), imshow(median_filtered), title('中值滤波');

在这里插入图片描述
③ 实验结果对比与分析
对比不同类型和尺寸的滤波器的实验结果,分析原因,并总结对于含有不同噪声图像,如何选择合适的滤波器,可以达到较好的去噪和平滑效果。
对添加了高斯噪声的图像进行消噪处理,不同的消噪方法效果不一。应针对不同噪声选择不同的滤波器。

3.3 百分比滤波

使用 Matlab/Python +OpenCV中的相关函数,对原图和加噪的图像分别进行中值滤波、最大值滤波和最小值滤波。
① 请填写使用到的函数以及参数说明:

在这里插入图片描述

② 源代码及实验结果(添加必要注释)

%实验4—3 对图像进行中值滤波、最大值滤波和最小值滤波。
% 读取原图像
image = imread('lena.png');
original_image = rgb2gray(image);
% 生成加噪图像(这里假设添加了椒盐噪声)
noisy_image = imnoise(original_image, 'salt & pepper', 0.1);% 中值滤波
median_filtered_original = medfilt2(original_image, [3 3]);
median_filtered_noisy = medfilt2(noisy_image, [3 3]);% 最大值滤波
max_filtered_original = ordfilt2(original_image, 9, ones(3, 3));
max_filtered_noisy = ordfilt2(noisy_image, 9, ones(3, 3));% 最小值滤波
min_filtered_original = ordfilt2(original_image, 1, ones(3, 3));
min_filtered_noisy = ordfilt2(noisy_image, 1, ones(3, 3));% 显示原始图像和滤波后的图像
figure;
subplot(3, 2, 1), imshow(original_image), title('原始图像');
subplot(3, 2, 2), imshow(median_filtered_original), title('中值滤波(原始图像)');
subplot(3, 2, 3), imshow(original_image), title('原始图像');
subplot(3, 2, 4), imshow(min_filtered_original), title('最小值滤波(原始图像)');
subplot(3, 2, 5), imshow(original_image), title('原始图像');
subplot(3, 2, 6), imshow(max_filtered_original), title('最大值滤波(原始图像)');figure;
subplot(3, 2, 1), imshow(noisy_image), title('加噪图像');
subplot(3, 2, 2), imshow(max_filtered_noisy), title('最大值滤波(加噪图像)');
subplot(3, 2, 3), imshow(noisy_image), title('加噪图像');
subplot(3, 2, 4), imshow(median_filtered_noisy), title('中值滤波(加噪图像)');
subplot(3, 2, 5), imshow(noisy_image), title('加噪图像');
subplot(3, 2, 6), imshow(min_filtered_noisy), title('最小值滤波(加噪图像)');

在这里插入图片描述
③ 实验结果对比与分析
观察实验结果,分析原因,思考中值滤波、最大值滤波和最小值滤波可能的应用场景。
1.中值滤波(Median Filter):
中值滤波主要用于去除图像中的椒盐噪声(Salt-and-Pepper Noise)。当图像受到高斯模糊或摄像机移动等因素的影响时,可能会出现椒盐噪声。中值滤波通过取像素周围邻域内的中值来消除噪声,保留图像的边缘信息。因此,适用于去除高斯噪声或降低图像噪声的场景。

2.最大值滤波(Maximum Filter):
最大值滤波主要用于增强图像的对比度。当图像的亮度分布不均匀时,可以通过最大值滤波来突出图像中的最大亮度值,使得图像的整体亮度更加均匀。因此,适用于调整光照不均或需要增强图像对比度的场景。

3.最小值滤波(Minimum Filter):
最小值滤波与最大值滤波相反,它主要用于减弱图像的对比度。当图像的亮度分布不均匀时,可以通过最小值滤波来突出图像中的最小亮度值,使得图像的整体亮度更加均匀。因此,适用于调整光照不均或需要减弱图像对比度的场景。

3.4 边缘提取和图像锐化

使用 Matlab / Python +OpenCV中的边缘提取函数,分别提取图像的Sobel、Robert、Laplacian、Prewitt、Canny边缘。
① 请填写使用到的函数以及参数说明:
在这里插入图片描述

② 边缘提取
源代码及实验结果(源代码添加必要注释,结果展示使用不同边缘提取算子的效果)

% 实验4—4 图像的边缘提取
% 读取图像
image = imread('lena.png');% 将图像转换为灰度图像(如果原始图像是彩色图像)
gray_image = rgb2gray(image);% 使用Sobel算子进行边缘提取
sobel_edge = edge(gray_image, 'Sobel');% 使用Robert算子进行边缘提取(当前版本不支持该算子)
%robert_edge = edge(gray_image, 'Robert');% 使用Laplacian算子进行边缘提取
laplacian_edge = edge(gray_image, 'log');% 使用Prewitt算子进行边缘提取
prewitt_edge = edge(gray_image, 'Prewitt');% 使用Canny算子进行边缘提取
canny_edge = edge(gray_image, 'Canny');% 显示原始图像和边缘提取结果
subplot(2, 3, 1), imshow(image), title('Original Image');
subplot(2, 3, 2), imshow(sobel_edge), title('Sobel Edge');
%subplot(2, 3, 3), imshow(robert_edge), title('Robert Edge');
subplot(2, 3, 4), imshow(laplacian_edge), title('Laplacian Edge');
subplot(2, 3, 5), imshow(prewitt_edge), title('Prewitt Edge');
subplot(2, 3, 6), imshow(canny_edge), title('Canny Edge');

在这里插入图片描述
③ 图像锐化
源代码及实验结果(源代码添加必要注释,结果展示使用不同边缘提取算子的效果)使用边缘提取的结果,对图像进行锐化。

%实验4—5 图像的锐化
% 读取图像
image = imread('lena.png');% 将图像转换为灰度图像(如果原始图像是彩色图像)
gray_image = rgb2gray(image);% 定义锐化滤波器
sharp_filter = [0 -1 0; -1 5 -1; 0 -1 0];% 应用锐化滤波器
sharpened_image = imfilter(gray_image, sharp_filter);% 调整锐化结果的对比度
sharpened_image = imadjust(sharpened_image);% 显示原始图像和锐化结果
subplot(1, 2, 1), imshow(gray_image), title('原始图像');
subplot(1, 2, 2), imshow(sharpened_image), title('锐化图像');

在这里插入图片描述
④ 实验结果对比与分析
对比实验结果结果,分析原因,并总结不同边缘提取算法的特点和适用情况。
Sobel算子:
特点:Sobel算子使用一阶导数来检测图像中的边缘,对噪声有一定的抵抗能力。它分别计算水平和垂直方向的梯度,并将它们合并成一个梯度值。
适用情况:Sobel算子适用于检测较明显的边缘,尤其是具有明显方向性的边缘,如图像中的边界和轮廓。
Prewitt算子:
特点:Prewitt算子与Sobel算子类似,也使用一阶导数来检测图像中的边缘。它分别计算水平和垂直方向的梯度,并将它们合并成一个梯度值。
适用情况:Prewitt算子适用于检测边缘,尤其是在具有明显方向性的边缘的情况下。
Laplacian算子:
特点:Laplacian算子使用二阶导数来检测图像中的边缘。它对边缘的精确位置和方向有更好的响应,并且可以检测到更细微的边缘变化。
适用情况:Laplacian算子适用于检测细微的边缘和纹理变化,但对噪声比较敏感。
Canny算子:
特点:Canny算子是一种多阶段的边缘检测算法,具有很好的性能。它首先使用高斯滤波器进行平滑处理,然后计算梯度,然后通过非极大值抑制和双阈值处理来提取边缘。
适用情况:Canny算子适用于需要高质量边缘检测的情况,对噪声有较好的抵抗能力,并且可以调整阈值以控制检测到的边缘数量。

3.5 自定义函数实现图像滤波

⑴不调用Matlab / OpenCV中的函数,编程实现图像的均值滤波,高斯滤波和中值滤波。
⑵与3.2、3.3的实验结果进行对比,观察实验结果是否相同,分析原因并改进、优化所编写程序。
⑶将所编写程序段封装为自定义函数。
① 均值滤波
源代码及实验结果 (添加必要注释)

def mean_filter(image, kernel_size):"""均值滤波函数:param image: 输入图像:param kernel_size: 滤波器大小:return: 滤波后的图像"""width, height = image.shapefiltered_image = np.zeros_like(image)padding = kernel_size // 2padded_image = np.pad(image, ((padding, padding), (padding, padding)), mode='constant')for i in range(padding, width + padding):for j in range(padding, height + padding):neighborhood = padded_image[i - padding:i + padding + 1, j - padding:j + padding + 1]filtered_image[i - padding, j - padding] = np.mean(neighborhood)return filtered_image

② 高斯滤波

def gaussian_filter(image, kernel_size, sigma):"""高斯滤波函数:param image: 输入图像:param kernel_size: 滤波器大小:param sigma: 高斯核的标准差:return: 滤波后的图像"""width, height = image.shapefiltered_image = np.zeros_like(image)padding = kernel_size // 2padded_image = np.pad(image, ((padding, padding), (padding, padding)), mode='constant')kernel = gaussian_kernel(kernel_size, sigma)for i in range(padding, width + padding):for j in range(padding, height + padding):neighborhood = padded_image[i - padding:i + padding + 1, j - padding:j + padding + 1]filtered_image[i - padding, j - padding] = np.sum(neighborhood * kernel)return filtered_image

③ 中值滤波:

def median_filter(image, kernel_size):"""中值滤波函数:param image: 输入图像:param kernel_size: 滤波器大小:return: 滤波后的图像"""width, height = image.shapefiltered_image = np.zeros_like(image)padding = kernel_size // 2padded_image = np.pad(image, ((padding, padding), (padding, padding)), mode='constant')for i in range(padding, width + padding):for j in range(padding, height + padding):neighborhood = padded_image[i - padding:i + padding + 1, j - padding:j + padding + 1]filtered_image[i - padding, j - padding] = np.median(neighborhood)return filtered_image

4. 实验小结

①在PhotoShop中找一找,有哪些功能是通过图像空间滤波实现的。
答:模糊/平滑滤波:通过应用均值滤波、高斯滤波或其他模糊滤波器来减少图像的细节和噪点,从而使图像更加平滑。
锐化滤波:通过应用锐化滤波器(如拉普拉斯滤波器)来增强图像的边缘和细节,使图像更加清晰和锐利。
边缘检测:通过应用边缘检测滤波器(如Sobel、Prewitt或Canny)来检测图像中的边缘和轮廓,以突出图像中的边界信息。
噪点去除:通过应用中值滤波器或其他噪点去除滤波器来减少图像中的椒盐噪点、高斯噪点或其他类型的噪点。
高动态范围(HDR)合成:通过应用图像空间滤波器和曝光调整来合成具有高动态范围的图像,以获得更广泛的亮度范围和更丰富的细节。
美颜和皮肤磨皮:通过应用柔化和模糊滤波器来减少皮肤上的细纹和瑕疵,实现美颜和皮肤磨皮效果。
②分析和总结3.2、3.3、3.4的实验结果,能够得到哪些启发或结论?
答:针对不同的图像和预期效果,可以选择不同的处理方案
③为了方便复用3.5的自定义函数,应该怎样设计和封装更加合理?你还能想到哪些进一步改进和优化的方法?
答:考虑多种不同的图像的滤波方案,同时设计良好的滤波思路,提高程序的鲁棒性。
④根据实验内容和结果,并查找相关资料,想一想,图像卷积在数字图像处理、机器学习、深度学习中有哪些应用?
答:图像滤波:图像卷积可以用于应用各种滤波器来实现图像平滑、边缘增强、噪点去除等操作。常见的滤波器包括均值滤波、高斯滤波、中值滤波等。
特征提取:在机器学习和计算机视觉任务中,图像卷积被广泛用于提取图像的特征。通过应用不同的卷积核,可以捕捉到图像中的边缘、纹理、形状等特征,为后续的分类、目标检测、分割等任务提供输入。
目标检测:在目标检测任务中,卷积神经网络(CNN)是一种常用的深度学习模型,它利用图像卷积层来提取图像特征,并通过后续的分类和回归层来识别图像中的目标物体。
图像分割:卷积神经网络也被广泛用于图像分割任务,通过对图像进行卷积操作,将图像划分为不同的区域或像素,并将每个区域或像素分配给特定的类别。
图像超分辨率:图像卷积在图像超分辨率重建中有应用。通过将低分辨率图像进行卷积和上采样操作,可以生成高分辨率的图像。
图像风格转换:卷积神经网络可以通过卷积操作来学习不同风格图像之间的特征表示,从而实现图像风格的转换。
图像增强:卷积神经网络可以通过卷积操作来学习图像增强的映射函数,从而改善图像的质量、对比度或颜色等方面。

相关文章:

实验4 图像空间滤波

1. 实验目的 ①掌握图像空间滤波的主要原理与方法; ②掌握图像边缘提取的主要原理和方法; ③了解空间滤波在图像处理和机器学习中的应用。 2. 实验内容 ①调用 Matlab / Python OpenCV中的函数,实现均值滤波、高斯滤波、中值滤波等。 ②调…...

独辟蹊径:我是如何用Java自创一套工作流引擎的(下)

作者:后端小肥肠 创作不易,未经允许严禁转载。 姊妹篇:独辟蹊径:我是如何用Java自创一套工作流引擎的(上)_java工作流引擎-CSDN博客 1. 前言 在上一篇博客中,我们详细介绍了如何利用Java语言从…...

【Python】pycharm常用快捷键操作

目录 一.pycharm自定义修改快捷键 二.pycharm默认常用快捷键 一.pycharm自定义修改快捷键 在file-setting-keymap中可以修改快捷键,建议刚开始没特殊需求就不用修改,先熟悉系统默认的常用快捷键,但是以下情况可以考虑修改: 之前使用其他I…...

es6语法复习一

es6语法 1.var 变量提升 2.let 不存在变量提升,只能定义一次 3.const 先定义再使用,定义好来不能修改 4.解构赋值 [a,b,c][1,2,3],{a,b,c}{a:1,b:2,c:3} 5.模版字符串 let aaa; ${a} is ok 6.对象简化写法 const school{ name, change, improve(){ cons…...

【python入门】自定义函数

文章目录 定义自定义函数的基本语法参数类型示例代码函数作用域匿名函数(Lambda)闭包装饰器 Python中的自定义函数允许你编写一段可重用的代码块,这段代码可以带参数(输入),并可能返回一个值(输…...

ONLYOFFICE 桌面编辑器 8.1 版发布:全面提升文档处理效率的新体验

文章目录 什么是ONLYOFFICE ?ONLYOFFICE 桌面编辑器 8.1 发布:新功能和改进功能强大的 PDF 编辑器幻灯片版式功能从右至左语言支持多媒体功能增强无缝切换工作模式其他改进和优化总结 什么是ONLYOFFICE ? https://www.onlyoffice.com/zh/off…...

ESP32实现UDP连接——micropython版本

代码: import network import socket import timedef wifiInit(name, port):ap network.WLAN(network.AP_IF) # 创建一个热点ap.config(essidname, authmodenetwork.AUTH_OPEN) # 无需密码ap.active(True) # 激活热点ip ap.ifconfig()[0] # 获取ip地址print(…...

Windows Ternimal

Windows Ternimal 安装 Windows 终端概述 | Microsoft Learn wt --help在当前目录打开 lextm/windowsterminal-shell: Install/uninstall scripts for Windows Terminal context menu items 打开指定目录 wt -d %USERPROFILE% ohmyposh 美化 1 安装 2 添加 ohmyposh bin…...

Unity扩展编辑器功能的特性

1.添加分组标题 用于在Unity的Inspector视图中为属性或变量组创建一个自定义的标题或头部,有助于在Inspector中组织和分类不同的属性,使其更易于阅读和管理。 [Header("Common Properties")] public float MouseSensitivity 5; public float…...

API类别 - UI核心

API类别 - UI核心 引言 在当今的数字时代,用户界面(UI)是任何软件或应用成功的关键因素之一。UI核心API作为构建用户界面的基础,提供了丰富的功能和工具,使得开发者能够创建出既美观又实用的用户界面。本文将深入探讨UI核心API的不同类别,以及它们如何影响现代软件开发…...

Redis-主从复制-配置主从关系

文章目录 1、修改配置文件中的 bind ,注释该配置,取消绑定仅主机登录2、修改protected-mode 为no,取消保护模式3、查看redis的进程状态4、配置6380是6379的从机5、配置6381是6379的从机6、查看主机 6379 的主从信息 1、修改配置文件中的 bind ,注释该配置,取消绑定仅主机登录 …...

DigiRL:让 AI 自己学会控制手机

类似于苹果此前发布的Ferret-UI 的安卓开源平替。主要用于在 Android 设备上识别 UI 和执行指令,不同的是它利用了离线到在线强化学习(Offline-to-Online RL),能够快速适应应用更新或 UI 变化。...

04.Ambari自定义服务开发-自定义服务配置文件在Ambari中的设置方法

文章目录 设置方法配置文件设置Custom xxx配置文件详细的配置方法.xml文件的整体格式基础参数格式value-attributes配置介绍设置属性在服务安装后不可修改设置允许字段为空是否显示配置名称参数类型设置字符串类型PasswordBooleanIntFloatDirectoryDirectoriesContent-多行文本…...

LSTM时间序列基础学习

时间序列 时间序列可以是一维,二维,三维甚至更高维度的数据,在深度学习的世界中常见的是三维时间序列,这三个维度分别是(batch_size,time_step,input_dimensions)。 其中time_step是时间步,它…...

『Z-Workshop』 6月22日线下ALCOVE分享活动

2024 求是创新 ZJUBCA Sponsored by the ALCOVE Community TIME:2024/06/22 ADD:浙江大学紫金港校区 --- Alcove 是 Aptos 公链与 Alibaba Cloud 共同打造的亚洲首个 Move 开发者社区,致力于支持开发者使用 Move 语言构建下一代 Web3 应用&am…...

【机器学习】机器学习重要方法——迁移学习:理论、方法与实践

文章目录 迁移学习:理论、方法与实践引言第一章 迁移学习的基本概念1.1 什么是迁移学习1.2 迁移学习的类型1.3 迁移学习的优势 第二章 迁移学习的核心方法2.1 特征重用(Feature Reuse)2.2 微调(Fine-Tuning)2.3 领域适…...

uniapp, ‍[⁠TypeError⁠]‍ “Failed to fetch dynamically imported module“ 报错解决思路

文章目录 1. 背景2. 报错3. 解决思路4. 思考参考1. 背景 最近基于uniapp开发一款设备参数调试的APP软件,在使用第三方插件的过程中,出现下面的报错。 2. 报错 [plugin:vite:import-analysis] Cannot find module ‘D:/leaning/uniapp/demo/jk-uts-udp示例/uni_modules/uts-…...

四川省高等职业学校大数据技术专业建设暨专业质量监测研讨活动顺利开展

6月21日,省教育评估院在四川邮电职业技术学院组织开展全省高等职业学校大数据技术专业建设暨专业质量监测研讨活动。省教育评估院副院长赖长春,四川邮电职业技术学院党委副书记、校长冯远洪,四川邮电职业技术学院党委委员、副校长程德杰等出席…...

深入解析三大跨平台开发框架:Flutter、React Native 和 uniapp

深入解析三大跨平台开发框架:Flutter、React Native 和 uniapp 在移动开发中,跨平台开发框架已经成为开发者的首选工具。本篇将深入解析三大主流跨平台开发框架:Flutter、React Native 和 uniapp。下面将详细探讨它们的原理、优势和劣势。 …...

【吊打面试官系列-MyBatis面试题】#{}和${}的区别是什么?

大家好,我是锋哥。今天分享关于 【#{}和${}的区别是什么?】面试题,希望对大家有帮助; #{}和${}的区别是什么? #{} 是预编译处理,${}是字符串替换。 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网…...

解决HTTP 400 Bad Request错误的方法

解决HTTP 400 Bad Request错误的方法 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在进行网络通信时,HTTP 400 Bad Request错误是相对常见的问题…...

Html的表单标签。(Java程序员需要掌握的前端)

表单标签 2.5.1 表单 2.5.1.1 介绍 那表单呢,在我们日常的上网的过程中,基本上每天都会遇到。比如,我们经常在访问网站时,出现的登录页面、注册页面、个人信息提交页面,其实都是一个一个的表单 。 当我们在这些表单中录入数据之后&#xf…...

Arduino (esp ) 下String的内存释放

在个人的开源项目 GitHub - StarCompute/tftziku: 这是一个通过单片机在各种屏幕上显示中文的解决方案 中为了方便快速检索使用了string,于是这个string在esp8266中占了40多k,原本以为当string设置为""的时候这个40k就可以回收,结果发觉不行…...

图灵虚拟机配置

导入虚拟机 点击新建,选择虚拟硬盘文件 环境机器.vmdk 配置网络...

【SQL常用日期函数(一)】

SQL 常用日期函数-基于impala 引擎 当前日期(YYYY-MM-DD) SELECT CURRENT_DATE(); -- 2024-06-30昨天 SELECT CURRENT_DATE(); -- 2024-06-30 SELECT CAST( DAYS_ADD(TO_DATE( CURRENT_DATE() ), -1 ) AS VARCHAR(10) ); -- 2024-06-29 SELECT CAST( …...

C++操作系列(二):VSCode安装和配置C++开发环境

1. VSCode下载 进入VSCode的官网网页:Download Visual Studio Code - Mac, Linux, Windows 下载相应的版本: 2. 安装VSCode 安装到指定位置: 一路下一步,直至安装完成: 3. 安装C插件 3.1. 安装C/C 点击扩展图标&…...

【java12】java12新特性之File的mismatch方法

Java12引入了一个新的方法 mismatch,它属于java.nio.file.Files类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1。 Files.mismatch 方法声明 public static long mismatch(Path path1, Pat…...

uni-app (通过HBuilderX 和 VS Code 开发)详细连接过程教学。

使用 HBuilderX 创建 uni-app 项目 并编译到微信开发者工具。 uni-app 支持两种方式创建项目: 通过 HBuilderX 创建 通过命令行创建 首先我们需要先下载HBuilderX 下载链接地址:DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2…...

安宝特方案 | AR术者培养:AR眼镜如何帮助医生从“看”到“做”?

每一种新药品的上市都需要通过大量的临床试验,而每一种新的手术工具在普及使用之前也需要经过反复的实践和验证。医疗器械公司都面临着这样的挑战:如何促使保守谨慎的医生从仅仅观察新工具在手术中的应用,转变为在实际手术中实操这项工具。安…...

20240628每日前端---------解决vue项目滥用watch

主题 滥用watch。 名字解释 watch 例子 先看一个代码例子&#xff1a; <template>{{ dataList }} </template><script setup lang"ts"> import { ref, watch } from "vue";const dataList ref([]); const props defineProps([&q…...

【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark

论文&#xff1a;GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding ⭐⭐⭐⭐ arXiv:1804.07461, ICLR 2019 Site: https://gluebenchmark.com/ 文章目录 一、论文速读二、GLUE 任务列表2.1 CoLA&#xff08;Corpus of Linguistic Accep…...

Go线程调度器

基本结构 字段gcwaiting、stopwait和stopnoted都是串行运行时任务执行前后的辅助协调手段 gcwaiting字段的值用于表示是否需要停止调度 在停止调度前&#xff0c;该值会被设置为1在恢复调度之前&#xff0c;该值会被设置为0这样做的作用是&#xff0c;一些调度任务在执行时只…...

使用 fvm 管理 Flutter 版本

文章目录 Github官网fvm 安装Mac/Linux 环境Windows 环境 fvm 环境变量fvm 基本命令 Github https://github.com/leoafarias/fvmhttps://github.com/flutter/flutter 官网 https://fvm.app/ fvm 安装 Mac/Linux 环境 Install.sh curl -fsSL https://fvm.app/install.sh …...

若依-前后端分离项目学习

★★★★★省流 直接看第一集和最后一集★★★★★ 第一天&#xff08;6.24&#xff09; 具体参考视频 b站 楠哥教你学Java 【【开源项目学习】若依前后端分离版&#xff0c;通俗易懂&#xff0c;快速上手】 https://www.bilibili.com/video/BV1HT4y1d7oA/?shar…...

使用adb shell getprop命令获取Android设备的属性

常用属性获取&#xff1a; adb shell getprop ro.build.version.emui —查询EMUI版本 adb shell getprop ro.product.brand —查询手机品牌 adb shell getprop ro.product.name --查询设备名称 adb shell getprop ro.serialno —查询设备序列号 获取手机系统信息( CPU,厂商…...

LNMP环境部署指南

本文档将指导您在CentOS 6.5上部署LNMP&#xff08;Linux、Nginx、MySQL、PHP&#xff09;环境。 系统环境 系统平台&#xff1a;CentOS release 6.5 安装前准备 在安装LNMP之前&#xff0c;您需要安装一些编译器和依赖包。 必备编译器和工具 #安装gcc、gcc-c编译器&#…...

[stm32]温湿度采集与OLED显示

一、I2C总线协议 I2C&#xff08;Inter-integrated circuit &#xff09;是一种允许从不同的芯片或电路与不同的主芯片通信的协议。它仅用于短距离通信&#xff0c;是一种用于两个或多个设备之间进行数据传输的串行总线技术&#xff0c;它可以让你在微处理器、传感器、存储器、…...

大模型知识库的使用

大模型知识库的使用通常涉及以下几个方面&#xff0c;使用大模型知识库可以提高信息检索的准确性和效率&#xff0c;促进知识的传播和应用。同时&#xff0c;也需要关注知识库的质量和更新&#xff0c;以确保提供的知识是准确和可靠的。北京木奇移动技术有限公司&#xff0c;专…...

Docker - Oracle Database 23ai Free

博文目录 文章目录 说明命令NavicatSYSTEMPDBADMIN 扩展公共用户本地用户 说明 Oracle 官方镜像仓库 Database 23ai Free | Oracle Docker 官方没有提供 Oracle Database 相关镜像, 但是 Oracle 官方镜像仓库有提供, 打开上面的链接, 选择 Database, 选择合适的版本, 如 enter…...

spring常用方法

1. 读取配置文件信息 方式一&#xff1a; // 获取文件路径 String fileName "application.yaml"; String filePath this.getClass().getClassLoader().getResource(fileName).getPath();BufferedReader bufferedReader new BufferedReader(new FileReader(path)…...

虚拟机能装在移动硬盘里吗安全吗 PD虚拟机迁移到移动硬盘的方法

虚拟机技术的迅速发展为用户提供了更为灵活的跨系统办公方案。许多用户希望在不同的电脑设备上运行相同的虚拟机&#xff0c;同时带来的也有一个问题&#xff1a;虚拟机能否装在移动硬盘里&#xff1f;针对用户的疑问&#xff0c;接下来给大家介绍虚拟机能装在移动硬盘里吗&…...

刷算法Leetcode---7(二叉树篇)(前中后序遍历)

前言 本文是跟着代码随想录的栈与队列顺序进行刷题并编写的 代码随想录 好久没刷算法了&#xff0c;最近又开始继续刷&#xff0c;果然还是要坚持。 二叉树的题目比之前多了好多&#xff0c;就多分几次写啦~ 这是力扣刷算法的其他文章链接&#xff1a;刷算法Leetcode文章汇总 …...

AliyunOS安装Node.js

方法1&#xff1a;dnf软件包安装工具自动安装 最方便的安装方式是通过系统的dnf工具&#xff0c;我测试使用的AliyunOS的版本是Alibaba Cloud Linux 3.2104&#xff0c;具体流程如下&#xff1a; dnf module list nodejs #列出服务器中可以使用的所有nodejs版本确定下来希望安…...

three.js - MeshPhongMaterial材质(实现玻璃水晶球效果)

1、概念 phong网格材质&#xff1a;Mesh - Phong - Material 一种用于具有镜面高光的光泽表面的材质。 它可以模拟&#xff0c;具有镜面高光的光泽表面&#xff0c;提供镜面反射效果。 MeshPhongMaterial&#xff1a; MeshPhongMaterial是一种基于Phong光照模型的材质&#…...

笔记本电脑安装CentOS

正文共&#xff1a;1234 字 24 图&#xff0c;预估阅读时间&#xff1a;2 分钟 前面我们对VPP进行了多次介绍&#xff08;羡慕&#xff01;大佬的VPP能达到180G性能&#xff0c;而我的却只有13.5G&#xff09;&#xff0c;可以发现他的很多优点&#xff0c;但是我们也可以发现它…...

ssh转发功能入门

端口转发概述 端口转发&#xff0c;能够将其他TCP端口的网络数据通过SSH链路转发&#xff0c;并且提供了ssh的加密和解密的服务。 ssh端口转发有如下这些优点&#xff1a; 提供了ssh的加密传输&#xff0c;利于安全能够突破防火墙限制 目前ssh端口转发有如下几种方式&#x…...

Listary(Windows 文件搜索工具)专业版值得购买吗?

说到经典的国货软件&#xff0c;有一款 Win 软件是一定绕不过去的。它就是知名的本地文件搜索工具 Listary&#xff01; 便捷的文件搜索窗口&#xff1b;快捷操作的体验&#xff1b;与系统更匹配的外观设计&#xff1b;更智能的排序和更可靠的索引。 便捷的文件搜索窗口 紧凑…...

面试突击指南:Java基础面试题2

面向对象和集合 1. 面向对象和面向过程的区别 面向过程:面向过程的编程方式是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,并在使用的时候逐个调用。这种方式性能较高,因此在单片机和嵌入式开发中经常采用面向过程开发。 面向对象:面向对象的编程方式是把问…...

MySQL快速安装(mysql8.0.30区别之前yum安装)

目录 一.初始化环境并解压 二.创建程序用户管理 三.修改mysql目录和配置文件的权限 四.修改配置文件 五.设置环境变量&#xff0c;申明/宣告mysql命令便于系统识别 六.初始化数据库 七.设置系统识别&#xff0c;进行操作 八.初始化数据库密码 九.用户并设置密码 十.赋…...

俄罗斯防空系统

俄罗斯的S系列防空系统是一系列先进的地对空导弹系统&#xff0c;旨在防御各类空中威胁&#xff0c;包括飞机、无人机、巡航导弹和弹道导弹。以下是几种主要的S系列防空系统&#xff1a; 1. **S-300系统**&#xff1a; - **S-300P**&#xff1a;最早期的版本&#xff0c;用…...

CV04_PASCAL VOC2012数据集介绍

1.1 简介 PASCAL Visual Object Classes (VOC) 2012 数据集是计算机视觉领域中一个广泛使用的标准数据集&#xff0c;用于评估和促进对象识别、分类、目标检测、图像分割以及其他视觉理解任务的算法性能。PASCAL VOC项目起始于2005年&#xff0c;并且每年都会更新数据集&#…...

Nifi脚本组件ExecuteScript 的使用(一)

ExecuteScript 组件的基本使用 前面已经介绍过Nifi中基本的数据流程&#xff0c;这里介绍一下最为常用的一个组件&#xff0c;ExecuteScript processor&#xff0c;顾名思义ExecuteScript组件是一组以自定义脚本为主体的组件&#xff0c;意思就是&#xff0c;可以在该组件内部…...

Linux 端口

什么是虚拟端口 计算机程序之间的通讯&#xff0c;通过IP只能锁定计算机&#xff0c;但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序&#xff0c;确保程序之间进行沟通。 IP地址相当于小区地址&#xff0c;在小区内可以有许多用户&#xff08;程序&#xff09;&…...

精雕细琢:Postman中请求体的设置艺术

精雕细琢&#xff1a;Postman中请求体的设置艺术 在API测试与开发的广阔天地中&#xff0c;Postman以其强大的功能和用户友好的界面成为了探索这一领域的必备工具。而在构建API请求的过程中&#xff0c;请求体&#xff08;Body&#xff09;的设置无疑是传达数据给服务器的关键…...

Redis基础教程(六):redis 哈希(Hash)

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

短视频文案提取神器怎么提取抖音视频文案!

很多编导以及视频内容创作者为了提高自己的工作效率还会使用视频转文字提取神器&#xff0c;我们都清楚短视频领域每个平台人群熟悉都有所不同&#xff0c;在分发内容的时候也会调整内容已符合平台属性。 短视频文案提取神器怎么提取抖音视频文案 短视频常见的平台有抖音、西瓜…...

比亚迪BYDSHARK墨西哥上市,开启南美出行新篇章

全球瞩目:BYD SHARK墨西哥首发,开启新能源皮卡新纪元在5月14日这个值得纪念的日子里,比亚迪首款皮卡BYD SHARK在墨西哥城举行了盛大的全球产品发布暨墨西哥上市发布会。BYD SHARK的惊艳亮相不仅彰显了比亚迪作为世界级新能源科技公司的强大实力,也宣告了全球新能源皮卡时代的正…...

面对6大争议,为什么我认为乐道L60必成爆款?

5月15日,国际家庭日。乐道首场品牌发布会以及首款车型乐道L60正式亮相。预售价格为21.99万元,叠加“2000元抵扣6000元购车款”政策之后,实际预售价为21.59万元。我们就从这个问题出发,又分别列出了以下6个问题,同时我们也采访了蔚来创始人李斌和乐道品牌负责人艾铁成,对于…...

年轻化的新一代迈腾,颜值并不丑,三大屏高通8155

年轻化的新一代迈腾,颜值并不丑,三大屏高通8155,像新势力中国汽车市场的竞争是越来越激烈,要想脱颖而出,即便是合资品牌旗下的主力常青树车型,现在也要拥抱变化了。就拿大众迈腾这款车来说,长期以来已经形成了一套固定的印象标签,无非就是中规中矩的沉稳商务风格。但全…...

新火种AI|寻求合作伙伴,展开豪赌,推出神秘AI项目...苹果能否突破AI困境?

作者&#xff1a;小岩 编辑&#xff1a;彩云 2024年&#xff0c;伴随着AI技术的多次爆火&#xff0c;不仅各大科技巨头纷纷进入AI赛道展开角力&#xff0c;诸多智能手机厂商也纷纷加紧布局相关技术&#xff0c;推出众多AI手机。作为手机领域的龙头老大&#xff0c;苹果自然是…...

Facebook的魅力:数字时代的社交热点

在当今数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;一直以其独特的魅力吸引着全球数十亿用户。本文将深入探讨Facebook的魅力所在&#xff0c;以及它在数字时代的社交热点。 1. 社交网络的霸主&…...

mysql中的内连接与外连接

在MySQL中&#xff0c;内连接和外连接是用于从多个表中检索数据的两种不同的连接方式。 内连接&#xff08;INNER JOIN&#xff09;&#xff1a; 内连接返回两个表之间匹配的行。它只返回两个表中共同匹配的行&#xff0c;如果在一个表中没有匹配到对应的行&#xff0c;则不会显…...