MATLAB第十章_图像处理算法
目录
图像处理算法
图像处理基础
图像处理函数
默认显示方式
添加颜色条
显示多帧图像
显示动画
三维材质图像
图像的直方图
灰度变换
均衡直方图
图像处理应用
图像增强
图像重建
图像变换
图像压缩
图像分割
图像边缘检测
图像识别
图像处理算法
图像处理基础
数字图像处理技术主要包括:图像增强、图像重建、图像变换、图像压缩、图像分割、图像边缘监测和图像识别等。
(1)图像增强
①空域法:在图像所在的像素空间进行处理
②频域法:通过对图像进行傅里叶变换后再频域上间接进行的
(2)图像重建
(3)图像变换
把图像从空域转换到频域,对原图像函数寻找一个合适变换的数学问题。可分为可分离变换和统计变换两大类。
(4)图像压缩
(5)图像分割
图像分割的方法主要有两种:一种是假设图像各个成分的强度值是均匀的,并利用这个特性,这种方法的技术有直方图分割;另外一种方法是寻找图像成分之间的边界,利用的是图像的不均匀性,基于这种方法的有梯度法分割。
(6)图像边缘检测
监测图像中的线状局部结构
(7)图像识别
图像识别是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术
图像处理函数
默认显示方式
imshow - 显示图像
在图窗中显示灰度图像 I。imshow 使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。
imshow(I)
在图窗中显示灰度图像I
。imshow
使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。
imshow(I,[low high])
显示灰度图像I
,以二元素向量[low high]
形式指定显示范围。
imshow(RGB)
在图窗中显示真彩色图像RGB
。
imshow(BW)
在图窗中显示二值图像BW
。对于二值图像,imshow
将值为0
(零)的像素显示为黑色,将值为1
的像素显示为白色。
添加颜色条
GUI 可以给图像添加颜色条控件,从而通过颜色条来判断图像中的数据数值。
imshow WIN7.png
colorbar
显示多帧图像
两种显示方式:
①在一个窗体中显示所有帧
②显示其中单独的某帧
创建多帧图像
montage - Display multiple image frames as rectangular montage. This MATLAB function displays all frames of a multiframe image array I.
load mri montage(D,map)
单独显示第20帧
load mri imshow(D(:,:,:,20))
显示动画
movie命令从多帧图像中创建动画,但是这个命令只能处理索引图。
load mri
mov = immovie(D,map);
colormap(map), movie(mov)
immovie - 基于多帧图像制作影片
此 MATLAB 函数 从使用颜色图 cmap 的多帧索引图像 X 中的图像返回影片结构体数组 mov。
三维材质图像
这种三维图像是指在三维图的表面显示二维图像。warp函数的功能是显示材质图像,所使用的技术是线性插值。
[x,y,z]=sphere;
A=imread('win7.png');
warp(x,y,z,A)
title(' win7.png')
warp(X,map)在一个简单的矩形表面上将带有颜色地图的索引图像X显示为纹理地图。
warp(I,n) 在一个简单的矩形表面上将具有n个层次的强度图像I作为纹理图显示出来。
warp(BW)将二值图像BW作为纹理图显示在一个简单的矩形表面上。
warp(RGB)将真彩色图像RGB作为纹理图显示在一个简单的矩形表面上。
warp(Z,___) 在Z面上显示图像。
warp(X,Y,Z,____)将图像显示在表面(X,Y,Z)上。h = warp(___) 返回一个到纹理映射表面的句柄。
图像的直方图
可以对RGB图、灰度图和二值图进行灰度转换,其中,灰度图和二值图的直方图表示不同。imhist
[counts,binLocations] = imhist(I)
计算灰度图像I
的直方图。imhist
函数在counts
中返回直方图计数,在binLocations
中返回 bin 位置。直方图中 bin 的数量由图像类型确定。
[counts,binLocations] = imhist(I,n)
指定用于计算直方图的 bin 的数量n
。
[counts,binLocations] = imhist(X,map)
计算具有颜色图map
的索引图像X
的直方图。对于颜色图中的每个条目,直方图中都有一个对应的 bin。
imhist(___)
显示绘制的直方图。如果输入图像是索引图像,则直方图在颜色图 map 的颜色条上方显示像素值分布。
I = imread('pout.tif');
clear all
clc
I = imread('pout.tif');
subplot(2,1,1),
imshow(I),
title('pout ');
subplot(2,1,2),
imhist(I),
title('直方图');
灰度变换
灰度变换的主要功能是改变图像的对比度。imadjust
imadjust:调整图像强度值或颜色图
J = imadjust(I)
将灰度图像I
中的强度值映射到J
中的新值。默认情况下,imadjust
对所有像素值中最低的 1% 和最高的 1% 进行饱和处理。此运算可提高输出图像J
的对比度。
J = imadjust(I,[low_in high_in])
将I
中的强度值映射到J
中的新值,以使low_in
和high_in
之间的值映射到 0 到 1 之间的值。
J = imadjust(I,[low_in high_in],[low_out high_out])
将I
中的强度值映射到J
中的新值,以使low_in
和high_in
之间的值映射到low_out
到high_out
之间的值。
J = imadjust(I,[low_in high_in],[low_out high_out],gamma)
将I
中的强度值映射到J
中的新值,其中gamma
指定描述I
和J
中的值之间关系的曲线形状。
J = imadjust(RGB,[low_in high_in],___)
将真彩色图像RGB
中的值映射到J
中的新值。您可以为每个颜色通道应用相同的映射或互不相同的映射。
newmap = imadjust(cmap,[low_in high_in],___)
将颜色图cmap
中的值映射到newmap
中的新值。您可以为每个颜色通道应用相同的映射或互不相同的映射。
I = imread('pout.tif');
J = imadjust(I, [0.3,0.7], []);
subplot(2,2,1),imshow(I),title('灰度图pout');
subplot(2,2,2),imhist(I), title('调整前的直方图');
subplot(2,2,3),imshow(J),title('调整后的灰度图pout');
subplot(2,2,4),imhist(J), title('调整后的直方图');
均衡直方图
根据图像直方图自动给出灰度变换函数,使得调整后的图像的直方图能尽可能接近预定定义的直方图,利用histeq对灰度图和索引图做直方图均衡。
J = histeq(I,hgram)
变换灰度图像I
,以使输出灰度图像J
具有length(hgram)
个 bin 的直方图近似匹配目标直方图hgram
。
J = histeq(I,n)
变换灰度图像I
,以使输出灰度图像J
具有n
个 bin 的直方图大致平坦。当n
远小于I
中的离散灰度级数时,J
的直方图更平坦。
J = histeq(I)
变换灰度图像I
,以使输出灰度图像J
的直方图具有 64 个 bin 且大致平坦。
newmap = histeq(X,map)
变换颜色图中的值,以使索引图像X
的灰度分量的直方图大致平坦。变换后的颜色图是newmap
。
newmap = histeq(X,map,hgram)
变换与索引图像X
相关联的颜色图,以使索引图像 (X
,newmap
) 的灰度分量直方图近似匹配目标直方图hgram
。histeq
函数返回变换后的颜色图newmap
。length(hgram)
必须与size(map,1)
相同。
[___,T] = histeq(___)
还返回变换T
,该变换将输入灰度图像或颜色图的灰度分量映射到输出灰度图像或颜色图的灰度分量。
I= imread('pout.tif');
J = histeq(I);figure(1),
subplot(1,2,1),
imshow(I),
title('调整前');
subplot(1,2,2),
imshow(J),
title('调整后');
图像处理应用
图像增强
图像增强技术主要包括直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。
%利用直方图统计算法对灰度图像进行增强
clear all
clc
I=imread('cameraman.tif');
subplot(2,2,[1,2])
imshow(I);
title('原始图像');
subplot(2,2,3)
imhist(I,64) %绘制图像的直方图,n为灰度图像灰度级;
title('灰度级64的直方图');
subplot(2,2,4)
imhist(I,256) %绘制图像的直方图,n为灰度图像灰度级;
title('灰度级256的直方图');
图像重建
利用phantom函数产生的大脑图,对于不同投影角度,重建图像。
phantom - Create head phantom image
This MATLAB function generates an image of a head phantom that can be used to test the numerical accuracy of radon and iradon or other two-dimensional reconstruction algorithms.P = phantom(def,n)
P是一个灰度图像,由一个大椭圆(代表大脑)组成,包含几个小椭圆(代表大脑中的特征)。 def指定要生成的头部幻影的类型,n指定幻影图像中的行和列的数量。
R = radon(I)
返回二维灰度图像I
的 Radon 变换R
,角度范围为 [0, 179] 度。Radon 变换是图像强度沿特定角度的径向线的投影。
R = radon(I,theta)
返回基于theta
所指定角度的 Radon 变换。
[R,xp] = radon(___)
返回向量xp
,其中包含与图像的每行对应的径向坐标。
iradon - 反radon变换
I = iradon(R,theta) 从R中以投影角theta捕获的投影数据重建图像I。
I = iradon(R,theta,interp,filter,frequency_scaling,output_size) 指定用于反Radon变换的参数。可以指定后四个参数的任何组合。对于你省略的参数,iradon使用默认值。
[I,H] = iradon(___) 还返回滤波器的频率响应,H。
imagesc - 使用缩放颜色显示图像
imagesc(C)
将数组C
中的数据显示为一个图像,该图像使用颜色图中的全部颜色。C
的每个元素指定图像的一个像素的颜色。生成的图像是一个m
×n
像素网格,其中m
和n
分别是C
中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心。示例
imagesc(x,y,C)
指定图像位置。使用x
和y
可指定与C(1,1)
和C(m,n)
对应的边角的位置。要同时指定两个边角,请将x
和y
设置为二元素向量。要指定第一个边角并让imagesc
确定另一个,请将x
和y
设为标量值。图像将根据需要进行拉伸和定向。
clear all
clc
%用phantom函数产生Sheep-Logan的大脑图
P=phantom('Modified Shepp-Logan',200);
imshow(P)
title('原始图像')
%以下为三种不同角度的投影模式
theta1=0:10:190;
[R1,xp]=radon(P,theta1); %存在20个角度投影
theta2=0:5:195;
[R2,xp]=radon(P,theta2); %存在40个角度投影
theta3=0:2:178;
[R3,xp]=radon(P,theta3); %存在90个角度投影
figure(1)
subplot(2,3,[1,2,3]);
imagesc(theta3,xp,R3);
colormap(hot);
colorbar;
%显示图像Sheep-Logan的radon变换
title('经radon变换后的图像')
xlabel('\theta');
ylabel('x\prime'); %定义坐标轴
%用三种情况的逆radon变换来重建图像
I1=iradon(R1,8);
I2=iradon(R2,8);
I3=iradon(R3,8);
subplot(2,3,4);
imshow(I1)
title('投影角度20个')
subplot(2,3,5);
imshow(I2)
title('投影角度40个')
subplot(2,3,6);
imshow(I3)
title('投影角度90个')
图像变换
为了用正交函数或正交矩阵表示图像而对原图像进行二维线性可逆变换时,一般称原始图像为空间域图像,称变换后的图像为转换域图像,转换域图像可反变换为空间域图像。图像处理过程中用的变换都是酉变换,即变换和满足正交条件的变换,更有利于特征抽取,增强,压缩和图像编码。
clear all
clc
%%%%%%%%%%分辨率为100%%%%%%%%%
figure(1) %创建窗口的图形对象,句柄为1
subplot(2,2,1)
N=100; %分辨率
f=zeros(50,50); %产生一个50*50的全0数组
f(15:35,23:28)=1;
%定义图像数组,从15行到35行,23列到28列附值为1,为白色,其他区域为黑色
imshow(f) %显示图像
title('原始图像(分辨率100)');
F=fft2(f,N,N); %在二维傅立叶变换前把f截断或者添加0,使其成为N*N的数组
subplot(2,2,2)
imshow(F,[-1,5]);
title('二维快速傅立叶变换后的图像');
subplot(2,2,[3,4])
F2=fftshift(abs(F)); %把傅立叶变换的零频率部分移到频谱的中间
x=1:N;
y=1:N; %定义x和y的范围
mesh(x,y,F2(x,y));%绘制立体网状图,将图形对象的色度改为灰度图像
title('傅里叶变换后零频率部分移到频谱中间');
colormap(gray);
colorbar
图像压缩
①DCT压缩
DCT不能直接对图像产生压缩作用,但是对图像的能量有很好的集中效果,为压缩打下了基础。
clear all clc I=imread('cameraman.tif'); figure(1) subplot(1,2,1) imshow(I); title('原始图像') disp('原始图像大小:') whos('I') I=im2double(I); %图像类型存储转换,将图像矩阵转换成双精度类型 T=dctmtx(8); %离散余弦变换矩阵 B=blkproc(I,[8 8],'P1*x*P2',T,T'); mask=[1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',mask); I2=blkproc(B2,[8 8],'P1*x*P2',T',T); subplot(1,2,2) imshow(I2); title('压缩后的图像') disp('压缩图像的大小:') whos('I2')
②小波变换
图像分割
把一个阵列划分成若干不交叠区域。遗传算法/贝叶斯算法。
图像边缘检测
Sobel算子主要用于获得数字图像的一节梯度,常见应用是边缘检测。
edge - 查找图像强度的边缘
BW = edge(I)
返回二值图像BW
,其中的值1
对应于灰度或二值图像I
中函数找到边缘的位置,值0
对应于其他位置。默认情况下,edge
使用 Sobel 边缘检测方法。
BW = edge(I,method)
使用method
指定的边缘检测算法检测图像I
中的边缘。
BW = edge(I,method,threshold)
返回强度高于threshold
的所有边缘。
BW = edge(I,method,threshold,direction)
指定要检测的边缘的方向。Sobel 和 Prewitt 方法可以检测垂直方向和/或水平方向的边缘。Roberts 方法可以检测与水平方向成 45 度角和/或 135 度角的边缘。仅当method
是'Sobel'
、'Prewitt'
或'Roberts'
时,此语法才有效。
clear all
clc
I=imread('cameraman.tif');
figure(1)
subplot(2,3,1)
imshow(I)
title('原始图像')
BW=edge(I,'sobel');
%以自动域值选择法对图像进行Sobel算子边缘检测
subplot(2,3,2)
imshow(BW);
title('边缘检测')
[BW,thresh]=edge(I,'sobel');
%返回当前Sobel算子边缘检测的域值
disp('sobel算子自动选择的域值为:')
disp(thresh)
BW1=edge(I,'sobel',0.02,'horizontal');
%以域值为0.02水平方向对图像进行Sobel算子边缘检测
subplot(2,3,3)
imshow(BW1)
title('水平方向域值0.02')
BW2=edge(I,'sobel',0.02,'vertical');
%以域值为0.02垂直方向对图像进行Sobel算子边缘检测
subplot(2,3,4)
imshow(BW2)
title('垂直方向域值0.02')
BW3=edge(I,'sobel',0.05,'horizontal');
%以域值为0.05水平方向对图像进行Sobel算子边缘检测
subplot(2,3,5)
imshow(BW3)
title('水平方向域值0.05')
BW4=edge(I,'sobel',0.05,'vertical');
%以域值为0.05垂直方向对图像进行Sobel算子边缘检测
subplot(2,3,6)
imshow(BW4)
title('垂直方向域值0.05') % sobel算子自动选择的阈值为:0.1433
图像识别
模板匹配模型
人脸识别算法
clear all clc %获取RGB图片 i=imread('face.jpg'); I=rgb2gray(i); BW=im2bw(I); figure(1) imshow(BW) %最小化背景 [n1 n2]=size(BW); r=floor(n1/10); c=floor(n2/10); x1=1;x2=r; s=r*c;for i=1:10y1=1;y2=c;for j=1:10if (y2<=c | y2>=9*c) | (x1==1 | x2==r*10)loc=find(BW(x1:x2, y1:y2)==0);[o p]=size(loc);pr=o*100/s;if pr<=100BW(x1:x2, y1:y2)=0;r1=x1;r2=x2;s1=y1;s2=y2;pr1=0;endimshow(BW);endy1=y1+c;y2=y2+c;endx1=x1+r;x2=x2+r; end figure(2) subplot(1,2,1); imshow(BW) title('图像处理') %人脸识别 L = bwlabel(BW,8); BB = regionprops(L, 'BoundingBox'); BB1=struct2cell(BB); BB2=cell2mat(BB1);[s1 s2]=size(BB2); mx=0; for k=3:4:s2-1p=BB2(1,k)*BB2(1,k+1);if p>mx & (BB2(1,k)/BB2(1,k+1))<1.8mx=p;j=k;end end subplot(1,2,2); title('人脸识别') imshow(I); hold on; rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1)],'EdgeColor','r' )
相关文章:

MATLAB第十章_图像处理算法
目录 图像处理算法 图像处理基础 图像处理函数 默认显示方式 添加颜色条 显示多帧图像 显示动画 三维材质图像 图像的直方图 灰度变换 均衡直方图 图像处理应用 图像增强 图像重建 图像变换 图像压缩 图像分割 图像边缘检测 图像识别 图像处理算法 图像处理…...

RobotFramework接口测试方案
1. Robot FrameWork介绍 1.1 介绍 Robot Framework是用于验收测试和回归测试的通用测试自动化框架。它使用易于理解的表格数据语法,非常友好的实现了关键字驱动和数据驱动模式。它的测试功能可以通过使用Python或Java实现的测试库进行扩展,用户可以使用…...

chatgpt赋能python:Python中日期转换:从字符串到日期对象
Python中日期转换:从字符串到日期对象 作为一个经验丰富的Python工程师,日期转换在我的日常编码工作中经常遇到。Python提供了一些内置函数和模块,可以将字符串转换为日期对象或将日期对象格式化为特定的字符串。本篇文章将带您深入了解Pyth…...

k8s 1.27新特性in-place使用方法:避坑指南(官方文档有坑,已提issue)
背景 按照官方文档试用新版的in-place特性时,一字不差地执行了,但是却出现了执行失败的情况: 执行kubectl -n qos-example patch pod qos-demo-5 --patch {"spec":{"containers":[{"name":"qos-demo-ct…...

网络传输(传输介质、通信方式、交换方式)
目录 一、传输介质1.双绞线2.网线安装3.光纤4.无线信道 二、通信方式、交换方式1.通信方式2.同步方式3.交换方式 一、传输介质 1.双绞线 双绞线:将多根铜线按规则缠绕在一起,能够减少干扰;分为无屏蔽双绞线UTP和屏蔽双绞线STP,都…...

【Unity】Time.deltaTime有什么用?看完你就明白
大多数刚开始使用 Unity 的人(包括我),都会对Time.deltaTime感到迷惑。 看完本文,你就会明白Time.deltaTime的定义及作用。 1、deltaTime是什么? 根据定义,Time.deltaTime是每一帧之间的时间间隔(以秒为单位)。 这有助于我们使游戏与帧数无关,也就是说,无论 fps 是…...

vue实现用户动态权限登录
一、使用vueelementUI搭登录框架,主要就是1、2、3、4 配置: ①vue.config.js use strict const path require(path)function resolve(dir) {return path.join(__dirname, dir) }// All configuration item explanations can be find in https://cli.v…...

ONNX模型修改为自定义节点
参考一 首先,需要将ONNX模型中的节点修改为自定义节点。要实现这一点,您需要了解自定义节点的定义和如何在ONNX中使用它们。ONNX定义了一个自定义运算符的接口,您可以使用该接口定义自己的运算符,并将其编译为ONNX模型可以识别的…...

内存对齐原则
struct (1)结构体第一个数据成员放在offset为0的地方,后面每个成员相对于结构体首地址的偏移量(offset)都是成员大小(该变量类型所占字节)的整数倍,如有需要编译器会在成员之间加上填…...

Java SPI 一 之SPI(Service Provider Interface)进阶 AutoService
一、SPI(Service Provider Interface) 1.1 介绍 SPI(Service Provider Interface),是JDK内置的一种 服务提供发现机制(为某个接口寻找服务实现的机制),可以用来启用框架扩展和替换组件,其…...

C++ list类成员函数介绍
目录 🤔list模板介绍: 🤔特点: 🤔list内存结构图解: 🤔 list的成员函数: 😊list构造函数: 🔍代码示例: 🔍运行结果&…...

【服务器】本地搭建PHP简单Imagewheel私人云图床
文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…...

第四十二回:DateRangePickerDialog Widget
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了DatePickerDialog Widget相关的内容,本章回中将介绍 DateRangePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的DateRangePickerDialog是一种弹出窗口,只不…...

【C++系列P3】‘类与对象‘-三部曲——[基础知识](1/3)
前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎! 【 类与对象-三部曲】的大纲主要内容如下: 如标题所示,本章是【 类与对象-三部曲】三章中的第一章节——基础知识章节,主要内容如下: 目录 一.…...

Android UEvent事件分析之Kernel上报电量
kernel-4.4\drivers\power\power_supply_core.c 当电量信息需要更新的时候,kernel会调用power_supply_changed_work这个工作队列,使用kobject_uevent函数往上发送uevent事件,action是KOBJ_CHANGE; static void power_supply_changed_work(struct work_struct *work) {uns…...

C++ vector模板和deque的简单应用
目录 🤔vector模板和deque的简单介绍: 🤔vector和deque的主要不同之处: 🤔今天我们用vector模板和deque模板实现以下简单的功能: 代码实现: 🤔讲解: 🤔vector模板和d…...

声明式事务控制
声明式事务控制 编程式事务控制相关对象 PlatformTransactionManager PlatformTransactionManager接口是spring的事务管理器,它里面提供了常用的操作事务的方法 方法说明TransactionStatus getTransaction(TransactionDefaultion defination)获取事务的状态信息…...

cisp pte模拟题
1.信息搜集 本题共三个key 端口 1433 27689 存活ip 192.168.85.137 2.访问网站27689进行信息搜集 一个登录框,sql注入失败,暴力破解失败 扫描目录 发现三个文件robots.txt ,web.config 除了robots.txt,其他都访问不了 访问robots.txt,发现一个file参数…...

Docker容器 和 Kubernetes容器集群管理系统
一、快速了解Docker 1. 什么是Docker的定义 Docker 是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以…...

港联证券|资金疯狂涌入AI,这一板块涨幅超90%!万亿巨头继续狂飙
国内外资金继续加码AI概念股。 当前,国内政策层面对于通用人工智能和算力中心的创新发展扶持政策不断推出,资本市场对于AI(人工智能)热情不断升温。在AI下游应用中,游戏板块成为最被看好的投资标的,资金流入…...

短视频矩阵系统源码-开源开发php语言搭建
短视频矩阵系统源码---------- php源码是什么? PHP源码指的就是PHP源代码,源代码是用特定编程语言编写的人类可读文本,源代码的目标是为可以转换为机器语言的计算机设置准确的规则和规范。因此,源代码是程序和网站的基础。 PHP…...

PFEA112-20 3BSE050091R20 张力控制器
您的张力测量系统包括: 张力电子PFEA111或PFEA112–PFEA111是一款经济高效的紧凑型用户友好型张力电子产品,提供 来自两个称重传感器的精确可靠的快速模拟SUM信号,用于控制 和/或监测。显示器可以显示SUM、单个A&B和差异信号小尺寸和DIN导…...

Java springboot+vue生成报纸排版页面的新闻官网
实现方案,可以作为您开始开发的参考: 后端: 使用Spring Boot框架构建Java Web应用;使用MyBatis Plus进行ORM映射,管理MySQL数据库;按照需求定义新闻数据表、类别数据表和用户数据表,使用默认的…...

Terra-Luna归零一年后:信任重建、加密未来路在何方?
本月既是Terra-Luna归零的一周年,也是FTX崩溃的第六个月,而这两个事件分别代表着2022年加密市场连环爆的开始与高潮,引发了加密行业15年历史上最可怕的生存危机。 尽管今年市场行情有所回暖,比特币开年至今涨幅70%,以太…...

Android 12.0 手动安装Persistent app失败的解决方案
1.概述 在12.0的系统产品开发中,对于一些安装app的失败问题,需要看日志 和抛出异常来判断问题所在,在最近的一些app安装失败抛出了关于Presistent app安装失败的问题,就需要从PMS安装的过程中看异常抛出的原因解决问题所在 2.手动安装Persistent app失败的解决方案的核心类…...

Unity3D安装:从命令行安装 Unity
推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 从命令行安装 Unity 如果要在组织中自动部署 Unity,可以从命令行安装 Editor 和其他组件。这些组件是普通的安装程序可执行程序和软件包,可以给用来自动部署…...

C++模板(详解)
非类型模板参数 模板参数可分为类型形参和非类型形参。类型形参: 出现在模板参数列表中,跟在class或typename关键字之后的参数类型名称。非类型形参: 用一个常量作为类(函数)模板的一个参数,在类ÿ…...

WuThreat身份安全云-TVD每日漏洞情报-2023-05-25
漏洞名称:Mitsubishi Electric MELSEC iQ-F 数据包缓冲区溢出 漏洞级别:严重 漏洞编号:CVE-2023-1424 相关涉及:Mitsubishi Electric Corporation MELSEC iQ-F Series CPU 漏洞状态:未定义 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-12805 漏洞名称:Ap…...

android 12.0去掉recovery模式UI页面的选项
1.概述 在12.0进行定制化开发,会根据需要去掉recovery模式的一些选项 就是在device.cpp去掉一些选项就可以了 2.去掉recovery模式UI页面的选项核心代码 bootable/recovery/recovery_ui/device.cpp bootable/recovery/recovery_main.cpp 3.去掉recovery模式UI页面的选项的核…...

C++ vector类成员函数介绍
目录 🤔vector模板介绍: 🤔特点: 🤔vector的成员函数: 🔍vector构造函数: 🔍vector赋值函数 🔍vector容器的判断函数 resize函数的重点内容: …...