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

计算机视觉CV期末总复习

1.计算机视觉基础

数字图像表示

二值图像

仅包含黑白两种颜色的图像,只使用1个比特为(0黑或1白)表示

彩色图像:分不同的颜色空间

gray灰度图像

每个像素只有一个采样颜色,取值范围0--255,为8比特位,0为黑,255为白

RGB颜色空间

(0,0,0)为黑,(255,255,255)为白,对机器友好的色彩模式,没那么人性化

CMY/CMYK颜色空间 

C青、M洋红(品红)、Y黄色、K黑色

HSV颜色空间

H色调S饱和度V明度

 YUV 颜色空间

Y明亮度、U色度、V浓度(饱和度)

储存格式:

  • 平面格式
  • 紧凑格式

2.opencv

通用开源功能强大的图像处理和计算机视觉库

主要功能及模块

  • 内置了基本数据结构和输入输出结构
  • 图像处理操作
  • 圆形界面操作
  • 视频分析
  • 3D重建

基本操作

读写显示图像

就是imread()将图片读入内存,支持jpg、png

img.shape(512,512,3)中图像三个数代表高、宽、通道数 ,分辨率为512x512,三个数代表彩色图像为三维数组。

img.dtype结果输出为uint8,说明每个数组用1个字节(8位)表示,每个数组元素为rgb通道值

img.size输出为shape中三个数的乘积

写就是imwrite,将数组转化为图像保存

显示图像imshow

waitkey

没有按键返回-1,有的话返回对应按键的ASCII码(A 65 Z90  a97 z122)。负数或零表示无限等待。设置数字参数等待时间结束返回-1,单位为毫秒,1秒 = 1000毫秒。 

读写播放视频

把VideoCapture参数设置为0调用摄像头

写入文件: 

图像平滑

概念:平滑也称作模糊。为抑制遥感图像因传感器和大气因素影响出现的噪声,使图像亮度趋于平缓的方法。目的是使图像亮度平缓渐变,减小突变梯度,改善图片质量。

图像滤波

均值滤波

dst = cv2.blur(src,ksize,anchor,borderType)

src原图形、ksize卷积核大小(高宽通常相同,为正奇数)、a锚点(可选参数)、b边界值处理方式(可选参数)

import cv2img=cv2.imread('lena.jpg')cv2.imshow('img',img)img2=cv2.blur(img,(5,5))cv2.imshow('imgBlur',img2)cv2.waitKey(0)

方框滤波

dst=cv2.boxFilter(src,ddepth,ksize[,anchor[,normalize[,borderType]])

ddepth目标图像深度,一般用-1表示与原图像深度一致,n归一化

import cv2img=cv2.imread('lena2.jpg')cv2.imshow('img',img)img2=cv2.boxFilter(img,-1,(3,3),normalize=False)cv2.imshow('imgBlur',img2)cv2.waitKey(0)

高斯滤波

import cv2img=cv2.imread('lena2.jpg')cv2.imshow('img',img)img2=cv2.GaussianBlur(img,(5,5),0,0)cv2.imshow('imgBlur',img2)cv2.waitKey(0)

中值滤波 

dst = cv2.medianBlur(src,ksize)

ksize为整形,>1的正奇数

import cv2
img=cv2.imread('lena2.jpg')
cv2.imshow('img',img)
img2=cv2.medianBlur(img,9)
cv2.imshow('imgBlur',img2)
cv2.waitKey(0)

双边滤波

import cv2
img=cv2.imread('lena2.jpg')
cv2.imshow('img',img)
img2=cv2.bilateralFilter(img,9,100,100)
cv2.imshow('imgBlur',img2)
cv2.waitKey(0)

 卷积

上述五个滤波均通过参数设置卷积核,但2D卷积可自定义卷积核

图像分割 

概念:把图像分为具有若干特性的、具有独特性质的区域,并提出感兴趣目标的技术和过程。

感兴趣的为前景或目标,其余为背景

主要方法:基于阈值的分割、基于边缘、基于区域、基于聚类、基于图论、基于深度学习

基于阈值的分割

即把前景和背景进行划分

  • 全局阈值分割
  • 自适应阈值处理
  • 迭代法阈值分割

边缘检测

检测出图像中所有灰度值变化较大的点,点连接成线条,即为图像边缘。

目的是标识数字图像中变化明显的点,减少数据量,剔除不相关信息,保留结构属性。 

作用:提取物体重要特征

常见边缘检测方法:

soble边缘检测 

边缘:像素值发生跃迁的地方(变化率、导数最大处)。

图像梯度:导数差分。图像是二维离散函数,导数为差分,该差分称为图像梯度。

求原图边缘信息可以将原图像和一阶导数算子进行卷积 

sobel算子:又称一阶微分算子 。缺点:易受影响,用高斯滤波降噪

sobel边缘检测就是把高斯滤波和微分结合执行卷积,抗噪

x = cv2.Sobel(img,cv2.CV_16S,1,0)
y = cv2.Sobel(img,cv2.CV_16S,0,1)

拉普拉斯边缘检测

使用图像矩阵和拉普拉斯核进行卷积。本质是计算该点水平垂直四个相邻点平均点的差值。和sobel一样通过卷积计算边缘。

求原图边缘信息利用二阶差分计算 

dst = cv2.Laplacian(img,cv2.CV_8U)
8位无符号整数,这是一种常见的数据类型,用于表示像素值。

canny边缘检测

多阶段检测方法,比较复杂

  • 高斯滤波去除噪声
  • sobel核进行滤波,计算梯度
  • 边缘使用非极大值预测
  • 双阈值筛选:检测边缘双阈值去除假阳性(误检)
  • 分析边缘连接性,保留真正的,消除不明显的边缘
dst  = cv2.Canny(img,threshold1=50,threshold2=150)

当噪声很大时可通过高斯滤波提升效果:

 

 几何变换

色彩空间

img2 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)灰度图img2 = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)RGB色彩img2 = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)HSV色彩空间img2 = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)YUV/YCrCb色彩空间

图像变换

读图像:img = cv2.imread('1.png')显示:cv2.('img',img),注意这里的引号图像名必须有

缩放

通过cv2.resize(img,dsize,dx=x,dy=y)dsize代表转换后图像大小

  • 当为None时dxdy不能为0,且此时转换后图像宽度为:原图像宽度xdx,高度xdy
  • 不为None时转换后大小以dsize为准,其格式为元组,(width,height),代表宽高。

还有一个插值方式:interpolation :

  • 最近邻:cv2.INTERNEAREST
  • 双线性:cv2.LINEAR
翻转

cv2.flip(img,flipcode),flipcode有三种:

  • 0:x轴,垂直翻转
  • >0:y轴,水平翻转
  • <0:水平垂直翻转 
仿射变换 

包括了平移、旋转、缩放、映射。基本思想就是获得变换矩阵m

再通过cv2.warpAffine(img,m,dsize)仿射变换

  • 平移m:np.float32([[1,0,100],[0,1,50]]),右移100,下移50
  • 缩放:[[0.5,0,0],[0,0.5,0]]

旋转:通过cv2.getRoatation.Martix2D(center,angle,scale)获得m:

  • 中心:(width/2,heigh/2)
  • 旋转角度
  • 目标图与原图比例

 三点映射:通过cv2.AffineTransform(src,dst)获得m:

  • src:原图三点坐标:np.float32([[0,0],[],[]])
  • dst:目标图三点坐标

透视:通过cv2.warpPerspective(img,m,dsize)

m通过cv2.getPerspectiveTransform(src,dst)获得m:

  • src:原图四点坐标:np.float32([[0,0],[],[]])
  • dst:目标图四点坐标

 3.深度学习基础

基础

全连接:该层的某一个神经元与下一层的每一个神经元都连接

卷积:提取特征 过程:

无跨步strides=1 边界填充padding分:

  • arbitrary padding 任意填充
  • half padding 半填充
  • full padding 全填充 

二维卷积:

卷积层nn.Conv2d(in_channels=1,out_channels=2,kernel_size=5,stride=2,padding=2)激活函数:nn.ReLU()线性整流单元池化层:nn.MaxPool2d(kernel_size=(2,2),stride=2,padding=0) 作用:降低维度,减小特征图尺寸avg_pool = nn.AvgPool2d(kernel_size=2, stride=2)  # 池化窗口大小为 2x2,步幅为 2

关于激活函数: 激活函数

分组卷积:通过一个参数 groups来确定分组

深度可分离卷积:DSC

两部分:逐通道depthwise卷积,逐行逐列卷积(逐点pointwise卷积)

逐通道卷积就是把输入的k个通道分别通过单个卷积得到k个输出

逐点卷积:

  • 通过1x1卷积和把逐通道卷积得到的k个特征图进行融合
  • 能够通过改变卷积核的数量改变最终输出通道数

转置卷积和反卷积:反卷积即转置卷积的另一种表达。本质就是上采样增加特征图尺寸。应用如:图像分割、对抗网络

3D卷积:即读视频,添加了一个时间维度。4,3,3分别代表时间维度,高,宽

训练可视化 


writer = SummaryWriter(log_dir="./log", comment='test_tensorboard', filename_suffix="test")writer.add_scaler()标量数据可视化
writer.add_histogram()数据分布可视化
writer.add_image()特征图可视化
writer.add_graph()模型可视化

标量数据可视化,区别在于add_scalars的dict是字典,而不是常量

模型优化

数据增强:

from torchvision import transforms
transforms.Compose([transforms.ToTensor(),transforms.Resize((224, 224)),transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))
])

正则化:

L1正则化:权值向量w中各个元素的绝对值之和。比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|。L = L+λ |W|
L2正则化:权值向量中各个元素的平方和然后再求平方根,对参数进行二次约束,参数w变小,但不为零,不会形成稀疏解 。它会使优化求解稳定快速,使权重平滑。所以L2适用于特征之间没有关联的情况。L(w) = Loss(y, y_pred) + λ * ||w||^2

通过weight_decay参数实现L2正则化。optimizer = torch.optim.Adam(model.parameters(), lr=0.001, weight_decay=0.01)
这里的weight_decay参数就是L2正则化中的λ参数。

过拟合:解决方法:数据增强、正则化、早停、增加数据集大小

DenseNet

经典卷积

AlexNet,共8层,ReLu

VGG16,13层卷积3层全连接。通过增加网络层数能提高模型性能,且多个小卷积核替换大卷积核,softmax

GoogleNet 22层 softmax

ResNet 输入输出间引入恒等映射,解决网络退化问题

DenseNet 

共121层,分4个DenseBlock,且每个DenseBlock(下左图)内部都采用稠密连接。可理解为:

更激进的残差连接,创新点每层的输出都有前面所有层在channel维度上连接在一起,作为下一层的输入。

DenseNet121共四个DenseBlock,每个block间使用Transition Layer进行特征降维。

 

ResAttentionNet 

ResNet

网络深度增加时,网络的表现先是逐渐增加至饱和,然后迅速下降,出现网络退化问题

两种残差结构:

ResNet18, 34(浅层网络)的残差块的基本单元是BasicBlock 3、ResNet50, 101, 152 (深层网络)的残差块的基本单元是Bottleneck。原因是bottleneck计算量是basicBlock的1/16,常用于更深的网络,目的是减少计算和参数量

 ResAttentionNet

残差注意力网络,是一种结合了注意力机制和ResNet的卷积神经网络,旨在提升图像分类任务的性能。 该网络由多个注意力模块堆叠而成,每个模块包含:

  • 软掩膜分支( soft mask branch)
  • 主干分支(trunk branch)

软掩膜分支采用自底向上(bottom-up)和自顶向下(top-down)的结构,学习生成一个掩膜(mask),该掩膜作为权重的形式与主干分支的输出特征图相乘,从而生成最终的注意力感知特征图‌。 Mix Attention对每个通道和每个空间位置使用Sigmoid激活函数。

YOLO 

目标检测:找出图像中所有感兴趣的目标,确定他们的位置和类别。图像识别的四大任务:

  • 分类、定位、检测、分割

目标检测学习算法可分两类:单阶段onestage和双阶段twostage

twostage:

  • 先进行区域生成RP(包含待检测目标物体的预选框),在进行卷积分类
  • 任务流程:特征提取、生成RP、分类/定位回归
  • 常见算法:R-CNN、Fast R-CNN、Faster R-CNN、R-FCN、SPP-Net

onestage:

  • 无RP,直接在网络中提取特征预测物体类别和位置
  • 流程:特征提取、分类/定位回归
  • 常见算法:YOLO v1-YOLOv3、OverFeat、SSD、RetinaNet

onestage核心理念:

端到端的目标检测,经过一个CNN即可得到最终的检测结果(创新点)

端到端指的是整个系统的输入和输出通过一个统一的模型直接连接,无需中间步骤

核心:通过在原图密集抽样产生大量boundingbox(边界框),在进行分类和回归

YOLOv1

如何使用卷积进行目标检测的呢?三步

  • 卷积提取特征
  • 对特征图分类预测得到分类信息
  • 使用特征图进行物体位置检测得到bbox边界框坐标

模块1

在经过卷积后得到7x7x30的矩阵,7x7代表划分的网格数,30为2x5+20,2个框、5个结果、20个类别

卷积最后一层会输出SXS的特征图,映射到原始图像,原始图像就会被分成SXS的网格gridcell。如果样本的真实标签GroundTruth落在某个网格,该网格负责预测该物体,网格预测出B个边界框,最终使用和真实标签的IOU较大的框。

IOU:预测框和真实框的交叠率,二者交集/并集,结果为1最佳,

  • 缺点是无交集时永远为0,于是引入GIOU

模块二 

NMS非极大值抑制:选取邻域分类数值最高的,抑制低的窗口

置信度:指的是模型对于检测到的目标属于特定类别的确定程度。即模型预测的边界框(bounding box)中确实存在目标的概率。

回归坐标

指的是bbox(预测边界框)的坐标

计算过程

col,row指的是中心坐标的框相对于原坐标的偏移量  

训练过程 

过程:根据图像的标注框(GroundTruth)与模型输出的7X7X30的预测结果进行比较,计算loss和梯度,反向调整参数

训练样本:一个网格会使用2个bbox回归预测,最终使用IOU(预测框和真实框的交叠率)较大的框检测物体

损失函数 3个:

关于坐标损失中根号作用:用于改善回归中相同距离,小框产生误差更大的问题,即对小框惩罚更重。 

缺点

YOLOv5 

模型结构

输入端

mosaic数据增强:四张图片进行随机缩放、裁剪、排布之后再拼接

letterbox自适应图片缩放:确保图片缩放时保持长宽比,同时填充空白部分适应模型输入要求

自适应锚框anchor box计算:anchor,用于预测框计算时的参考框,基于此预测只需再参考框上进行精修即可,好处:收敛更快、效果更好

Backbone结构

Focus结构

切片操作。举例演示如将4×4×3的图像切片后变成2×2×12的特征图。如下图左:

CSP

该结构将基础层的特征映射划分为两部分,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时可以保证准确率。Yolov5s中设计了两种CSP结构,以CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。

Neck

Prediction 

GIOU损失函数

优点

  • 模型推理速度快
  • 可进行实时检测,准确率高
  • 促进了目标检测领域技术更新
  • 促进卷积网络工业化应用的发展

U-Net

图像分割概述

概念:根据灰度、色彩、空间纹理、几何形状等图像将空间分成若干互不相交的区域。这些特征在同一区域表现相似性,不同区域表现明显不同。

方法主要分两种:语义分割、实例分割

图像分割广泛应用于医疗、自动驾驶、地质检测、人像美妆 

UNET图像分割

主要成就

核心思想

模型结构

编码-解码,也称作下采样-上采样。可以总结为:收缩路径提取特征,扩张路径恢复像素。总体上就是同层跳跃连接的U型结构,能融合更多的空间和几何信息

编码就是典型的重复结构:卷积--ReLU激活--池化,且每次下采样都把通道的数量加倍。这里的下采样由卷积和最大池化实现。

  • 蓝色箭头:卷积,编码的卷积是无填充的3x3,尺寸减2,通道数不变,用于特征提取。解码层的卷积是无填充的3x3,尺寸减2,但通道数减半,用于信息解析。
  • 红色:2x2最大池化操作,步长为2,尺寸减半,用于降低维度
  • 灰色:复制裁剪,裁剪同层压缩路径的特征尺寸使其与当前扩展路径特征尺寸一致,合并,用于信息补充
  • 绿色:2x2转置卷积,尺寸加倍,通道数量减半,用于上采样
  • 青色:无填充的1x1卷积,尺寸不变,通道数为分类数,用于分类

解码是上采样的过程,可以看到,每次卷积通道减小一半(128--64),两次卷积变成原来的1/4,但合并为1/2 :

数据增强方式:

弹性形变,以获得形变不变性。通过模拟图像中可能出现的形变,如拉伸和压缩,来增强训练数据的多样性,从而使模型能够更好地泛化到未见过的形变。

Overlip-tile

处理需要保持输出尺寸与输入尺寸一致,以及需要为边界区域提供上下文信息的场景中。

优势

相关文章:

计算机视觉CV期末总复习

1.计算机视觉基础 数字图像表示 二值图像 仅包含黑白两种颜色的图像&#xff0c;只使用1个比特为&#xff08;0黑或1白&#xff09;表示 彩色图像&#xff1a;分不同的颜色空间 gray灰度图像 每个像素只有一个采样颜色&#xff0c;取值范围0--255&#xff0c;为8比特位&a…...

【微信小程序获取用户手机号

微信小程序获取用户手机号有2种,一种是前端自己解密,一种是获取后发给后端,后端去解密 重点:要在微信公众平台设置里面绑定微信开放平台账号,不然反解不出来用户手机号上代码: <button style"font-size: 16px;" open-type"getPhoneNumber" getphonenumb…...

WFP Listbox绑定数据后,数据变化的刷新

Listbox绑定数据通过ItemsSource来的&#xff0c;如果绑定的是普通的List<数据>&#xff0c;不会自己刷新。 使用ObservableCollection集合 解决问题的方法: 将数组替换为 ObservableCollection ObservableCollection 是专为绑定设计的集合类型&#xff0c;可以通知 W…...

Android Camera压力测试工具

背景描述&#xff1a; 随着系统的复杂化和业务的积累&#xff0c;日常的功能性测试已不足以满足我们对Android Camera相机系统的测试需求。为了确保Android Camera系统在高负载和多任务情况下的稳定性和性能优化&#xff0c;需要对Android Camera应用进行全面的压测。 对于压…...

【华为OD-E卷 - 最优资源分配 100分(python、java、c++、js、c)】

【华为OD-E卷 - 最优资源分配 100分&#xff08;python、java、c、js、c&#xff09;】 题目 某块业务芯片最小容量单位为1.25G&#xff0c;总容量为M*1.25G&#xff0c;对该芯片资源编号为1&#xff0c;2&#xff0c;…&#xff0c;M。该芯片支持3种不同的配置&#xff0c;分…...

字符串格式时间(HH-MM)添加间隔时间后转为HH-MM输出

转换时间代码如下所示 #include <iostream> #include <iomanip> #include <sstream>//添加时间转换为时间 std::string addMinutesToTime(const std::string& timeStr, int minutesToAdd) {int hours, minutes;char delimiter;//解析输入时间std::istri…...

SQL 基础教程 - SQL ORDER BY 关键字

SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集进行排序。 SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序&#xff0c;您可以使用 DESC 关键字。 SQL ORD…...

STM32 软件I2C读写

单片机学习&#xff01; 目录 前言 一、软件I2C读写代码框架 二、I2C初始化 三、六个时序基本单元 3.1 引脚操作的封装和改名 3.2 起始条件执行逻辑 3.3 终止条件执行逻辑 3.4 发送一个字节 3.5 接收一个字节 3.5 发送应答&接收应答 3.5.1 发送应答 3.5.2 接…...

neo4j学习笔记

图数据库 图数据库是基于图论实现的一种NoSQL数据库&#xff0c;其数据存储结构和数据查询方式都是图论为基础的&#xff0c;图数据库主要用于存储更多的连接数据。 图论&#xff08;GraphTheory&#xff09;是数学的一个分支。图论以图为研究对象&#xff0c;图论的图是由若干…...

【动手学电机驱动】STM32-MBD(2)将 Simulink 模型部署到 STM32G431 开发板

STM32-MBD&#xff08;1&#xff09;安装 STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署 【动手学电机驱动】STM32-MBD&#xff08;2&#xff09;Simulink 模型部署 1. 软硬件条件和环境测试1.1 软硬件条件1.2 开发环境测试 2. 创建基于 STM32 处理器…...

Nginx代理本地exe服务http为https

Nginx代理本地exe服务http为https 下载NginxNginx命令exe服务http代理为https 下载Nginx 点击下载Nginx 下载好之后是一个压缩包&#xff0c;解压放到没有中文的路径下就可以了 Nginx命令 调出cmd窗口cd到安装路径 输入&#xff1a;nginx -v 查看版本 nginx -h&#xff…...

C++: glibc: pthread: pthread_cond_destroy,程序hang一例

今天碰到一个程序hang的情况。程序在退出的时候,调用到了pthread_cond_destroy,但是另一个线程还在pthread_cond_timedwait。应该是死锁的一个例子。应该查看libpthread.so的二进制文件,查看具体是在等什么。 Thread 1 (Thread 0x7f7028037580 (LWP 38)): #0 0x00007f7022e…...

【中间件】docker+kafka单节点部署---zookeeper模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言消息中间件介绍1. KRaft模式2. zookeeper模式2.1. 单节点部署安装验证 前言 最近生产环境上准备部署ELFK日志监控&#xff0c;先在测试环境部署单节点kafka验证…...

深入Android架构(从线程到AIDL)_08 认识Android的主线程

目录 3、 认识Android的主线程(又称UI线程) 复习&#xff1a; 各进程(Process)里的主线程​编辑 UI线程的责任&#xff1a; 迅速处理UI事件 举例 3、 认识Android的主线程(又称UI线程) 复习&#xff1a; 各进程(Process)里的主线程 UI线程的责任&#xff1a; 迅速处理UI事…...

集线器,交换机,路由器,mac地址和ip地址知识记录总结

一篇很不错的视频简介 基本功能 从使用方面来说&#xff0c;都是为了网络传输的标识&#xff0c;和机器确定访问对象 集线器、交换机和路由器 常听到路由器和集线器&#xff0c;下面是区别&#xff1a; 集线器 集线器&#xff1a;一个简单的物理扩展接口数量的物理硬件。…...

【VUE】使用create-vue快速创建一个vue + vite +vue-route 等其他查看的工程

create-vue 简介 GitHub:https://github.com/vuejs/create-vue 创建的选项有多个,具体的可以看下方截图,当创建完成的时候可以发现工程中是自带vite的。 下面对其中的各种内容进行简单的说明 JSX (可以选择,但是我感觉没什么必要) 全称:JavaScript XML 允许你在 Java…...

Jetpack Compose 学习笔记(一)—— 快速上手

本篇主要是对 Jetpack Compose 有一个宏观上的了解。 1、Jetpack Compose 是什么与优势 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 Compose 的优势&am…...

Kafka3.x KRaft 模式 (没有zookeeper) 常用命令

版本号&#xff1a;kafka_2.12-3.7.0 说明&#xff1a;如有多个地址&#xff0c;用逗号分隔 创建主题 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic demo --partitions 1 --replication-factor 1删除主题 bin/kafka-topics.sh --delete --boots…...

Leetcode 最大正方形

java 实现 class Solution {public int maximalSquare(char[][] matrix) {//处理特殊情况if(matrix null || matrix.length 0 || matrix[0].length 0) return 0;int rows matrix.length;int cols matrix[0].length;int[][] dp new int[rows][cols]; //dp[i][j]的含义是以…...

ubuntu22.04录屏黑屏,飞书共享屏幕黑屏问题

参考https://cloud.tencent.com/developer/ask/sof/116470494 电脑是联想x1笔记本&#xff0c;显卡是intel的&#xff0c;nvidia显卡好像没看见这种问题。 sudo apt update sudo apt install xserver-xorg打开custom.conf&#xff0c; sudo gedit /etc/gdm3/custom.conf 解…...

沙箱模拟支付宝支付3--支付的实现

1 支付流程实现 演示案例 主要参考程序员青戈的视频【支付宝沙箱支付快速集成版】支付宝沙箱支付快速集成版_哔哩哔哩_bilibili 对应的源码在 alipay-demo: 使用支付宝沙箱实现支付功能 - Gitee.com 以下是完整的实现步骤 1.首先导入相关的依赖 <?xml version"1…...

Golang的代码质量分析工具

Golang的代码质量分析工具 一、介绍 作为一种高效、简洁、可靠的编程语言&#xff0c;被越来越多的开发者所喜爱和采用。而随着项目规模的增长和团队人员的扩大&#xff0c;代码质量的管理变得尤为重要。为了保障代码的可维护性、健壮性和可扩展性&#xff0c;我们需要借助代码…...

【Linux】:多线程(读写锁 自旋锁)

✨ 倘若南方知我意&#xff0c;莫将晚霞落黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#…...

Java开发 PDF文件生成方案

业务需求背景 业务端需要能够将考试答卷内容按指定格式呈现并导出为pdf格式进行存档&#xff0c;作为紧急需求插入。导出内容存在样式复杂性&#xff0c;包括特定的字体&#xff08;中文&#xff09;、字号、颜色&#xff0c;页面得有页眉、页码&#xff0c;数据需要进行表格聚…...

数学期望和方差

数学期望&#xff08;Mathematical Expectation&#xff09;和方差&#xff08;Variance&#xff09;是概率论和统计学中两个非常重要的概念。下面将分别对这两个概念进行解释。 数学期望 数学期望是随机变量的平均值&#xff0c;它描述了随机变量的中心位置。对于离散随机变…...

【面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍Tensor RT 的优化流程。

【面试AI算法题中的知识点】方向涉及&#xff1a;ML/DL/CV/NLP/大数据…本篇介绍Tensor RT 的优化流程。 【面试AI算法题中的知识点】方向涉及&#xff1a;ML/DL/CV/NLP/大数据…本篇介绍Tensor RT 的优化流程。 文章目录 【面试AI算法题中的知识点】方向涉及&#xff1a;ML/D…...

BLDC无感控制的驱动逻辑

如何知道转子已经到达预定位置&#xff0c;因为我们只有知道了转子到达了预定位置之后才能进行换相&#xff0c;这样电机才能顺滑的运转。转子位置检测常用的有三种方式。 方式一&#xff1a;通过过零检测&#xff0c;三相相电压与电机中性点电压进行比较。过零检测的优点在于…...

BP神经网络的反向传播算法

BP神经网络&#xff08;Backpropagation Neural Network&#xff09;是一种常用的多层前馈神经网络&#xff0c;通过反向传播算法进行训练。反向传播算法的核心思想是通过计算损失函数对每个权重的偏导数&#xff0c;从而调整权重&#xff0c;使得网络的预测输出与真实输出之间…...

[实用指南]如何将视频从iPhone传输到iPad

概括 将视频从 iPhone 传输到 iPad 时遇到问题&#xff1f;您可能知道一种方法&#xff0c;但不知道如何操作。此外&#xff0c;您要传输的视频越大&#xff0c;完成任务就越困难。那么如何将视频从 iPhone 传输到 iPad&#xff0c;特别是当您需要发送大视频文件时&#xff1f…...

Linux Snipaste 截图闪屏/闪烁

防 csdn 不能看&#xff0c;Go to juejin Linux Snipaste 截图时窗口元素一闪一闪的无法正常使用。 解决此问题时系统环境为 Manjaro KDE6&#xff0c;不过我在其他发行版与 gnome 上也碰到了。 先放解决办法&#xff1a; # 启动 Snipaste 时去掉缩放参数 env -u QT_SCREEN_…...