opencv-python学习笔记11-视频处理

目录

一、opencv视频处理的框架:

 二、捕获视频类VideoCapture:

(1)创建 VideoCapture 对象:

(2)读取视频帧:

(3)设置和获取视频属性:

(4)释放资源:

(5)示例代码:

(6)注意事项:

 三、图像金字塔:

(1)基本概念:

(2)pyrDown函数:

函数原型:

参数:

应用:

注意事项:

(3)cv2.pyrUp 函数:

函数原型:

参数:

应用:

注意事项:

(4) 高斯金字塔:

构建高斯金字塔的步骤:

高斯金字塔的特点:

在 OpenCV 中构建高斯金字塔:

​编辑 (5)向上取样和向下取样:

向下取样(Downsampling)

向上取样(Upsampling)

(6)拉普拉斯金字塔: 

构建拉普拉斯金字塔的步骤:

拉普拉斯金字塔的应用:

在 OpenCV 中实现拉普拉斯金字塔:


一、opencv视频处理的框架:

OpenCV是一个功能强大的图像和视频处理库,它提供了多种视频处理功能,包括读取、显示、保存视频,以及捕获视频流等。

  • 视频捕获:使用cv.VideoCapture()函数,你可以从视频文件或相机捕获视频。这个函数可以指定设备索引(通常0代表默认相机)或视频文件的路径。

  • 视频显示:通过cv.imshow()函数,你可以在窗口中显示视频帧。你可以为窗口指定一个标题,并使用cv.waitKey()函数来控制显示时间。

  • 视频保存:使用cv.VideoWriter()类,你可以将处理后的视频帧写入新的视频文件。你需要指定输出文件名、编解码器、帧率和帧大小。

  • 视频处理框架:OpenCV提供了一套完整的视频处理工具,包括视频读取、帧处理(如转换为灰度图像、应用滤镜等)和视频写入。

  • 实时视频处理:OpenCV能够处理实时视频流,这使得它在视频监控、实时分析等领域非常有用。

  • 视频分析:OpenCV还可以进行更高级的视频分析,如运动检测、对象跟踪和行为识别。

  • 硬件加速:在支持的系统上,OpenCV可以利用GPU加速视频处理任务,提高处理效率。

  • 跨平台:OpenCV是跨平台的,可以在Windows、Linux和macOS上运行,也可以在移动设备和嵌入式系统上使用。

  • 社区支持:OpenCV有一个活跃的社区,提供大量的教程、文档和论坛支持,帮助开发者解决问题。

  • 扩展性:OpenCV的模块化设计使得它可以轻松扩展,支持新的编解码器、算法和功能。

 二、捕获视频类VideoCapture:

在OpenCV中,cv2.VideoCapture 类是用于捕获视频的核心工具。它不仅可以从摄像头获取实时视频流,还可以读取存储在文件中的视频。以下是关于 cv2.VideoCapture 的详细解释和使用方法:

(1)创建 VideoCapture 对象:

有三种主要方式可以创建 VideoCapture 对象:

  • 从文件读取视频:

    cap = cv2.VideoCapture('path_to_video_file')

    这里,'path_to_video_file' 是视频文件的路径。

  • 从摄像头获取视频:

    cap = cv2.VideoCapture(camera_index)

    camera_index 是摄像头的索引号,通常从0开始。如果有多个摄像头,可以通过增加索引号来选择不同的摄像头。

  • 先创建对象,后打开:

    cap = cv2.VideoCapture()
    cap.open('path_to_video_file_or_camera_index')

    这种方式先创建一个空的 VideoCapture 对象,然后使用 open() 方法来指定视频源。

(2)读取视频帧:

一旦 VideoCapture 对象被创建,就可以使用 read() 方法来读取视频帧:

ret, frame = cap.read()

read() 方法返回两个值:ret 是一个布尔值,表示是否成功读取帧;frame 是读取的帧本身。

(3)设置和获取视频属性:

VideoCapture 提供了 set()get() 方法来设置和获取视频流的属性,如帧宽度、高度、帧率等。例如:

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)

可用的属性包括但不限于:

  • CAP_PROP_FRAME_WIDTH:

    • 描述:获取或设置视频流中帧的宽度(以像素为单位)。
    • 使用方法:cap.get(cv2.CAP_PROP_FRAME_WIDTH) 或 cap.set(cv2.CAP_PROP_FRAME_WIDTH, value)
  • CAP_PROP_FRAME_HEIGHT:

    • 描述:获取或设置视频流中帧的高度(以像素为单位)。
    • 使用方法:cap.get(cv2.CAP_PROP_FRAME_HEIGHT) 或 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, value)
  • CAP_PROP_FPS:

    • 描述:获取或设置视频流的帧率(每秒帧数)。
    • 使用方法:cap.get(cv2.CAP_PROP_FPS) 或 cap.set(cv2.CAP_PROP_FPS, value)
  • CAP_PROP_BRIGHTNESS:

    • 描述:获取或设置摄像头图像的亮度。此属性仅适用于摄像头。
    • 使用方法:cap.get(cv2.CAP_PROP_BRIGHTNESS) 或 cap.set(cv2.CAP_PROP_BRIGHTNESS, value)
  • CAP_PROP_CONTRAST:

    • 描述:获取或设置摄像头图像的对比度。此属性仅适用于摄像头。
    • 使用方法:cap.get(cv2.CAP_PROP_CONTRAST) 或 cap.set(cv2.CAP_PROP_CONTRAST, value)
  • CAP_PROP_SATURATION:

    • 描述:获取或设置摄像头图像的饱和度。此属性仅适用于摄像头。
    • 使用方法:cap.get(cv2.CAP_PROP_SATURATION) 或 cap.set(cv2.CAP_PROP_SATURATION, value)
  • CAP_PROP_HUE:

    • 描述:获取或设置摄像头图像的色调。此属性仅适用于摄像头。
    • 使用方法:cap.get(cv2.CAP_PROP_HUE) 或 cap.set(cv2.CAP_PROP_HUE, value)
  • CAP_PROP_EXPOSURE:

    • 描述:获取或设置摄像头的曝光时间。此属性仅适用于摄像头。
    • 使用方法:cap.get(cv2.CAP_PROP_EXPOSURE) 或 cap.set(cv2.CAP_PROP_EXPOSURE, value)

在 OpenCV 中,VideoCapture 类的 get() 方法用于检索视频流或摄像头的各种属性。

  • CAP_PROP_POS_MSEC (0): 视频文件的当前位置(以毫秒为单位)或视频捕获的时间戳。
  • CAP_PROP_POS_FRAMES (1): 从0开始的解码/捕获时间帧。
  • CAP_PROP_POS_AVI_RATIO (2): 视频文件的相对位置(播放):0=电影开始,1=影片的结尾。
  • CAP_PROP_FRAME_WIDTH (3): 视频流中的帧宽。
  • CAP_PROP_FRAME_HEIGHT (4): 视频流中的帧高。
  • CAP_PROP_FPS (5): 帧率。
  • CAP_PROP_FOURCC (6): 返回解码方式中的四字符代码。
  • CAP_PROP_FRAME_COUNT (7): 视频文件的总帧数。
  • CAP_PROP_FORMAT (8): 由 retrieve() 函数返回的矩阵对象的格式。
  • CAP_PROP_MODE (9): 用于预测当前捕获模式的后端专用值。
  • CAP_PROP_BRIGHTNESS (10): 图像的亮度(仅用于摄像头)。
  • CAP_PROP_CONTRAST (11): 图像的对比度(仅用于摄像头)。
  • CAP_PROP_SATURATION (12): 图像的饱和度(仅用于摄像头)。
  • CAP_PROP_HUE (13): 图像的色调(仅用于摄像头)。
  • CAP_PROP_GAIN (14): 图像增益(仅用于摄像头)。
  • CAP_PROP_EXPOSURE (15): 曝光度(仅用于摄像头)。
  • CAP_PROP_CONVERT_RGB (16): 用于预测图像是否应该被转换为RGB的布尔标志。
  • CAP_PROP_WHITE_BALANCE (17): 白平衡(当前不支持)。
  • CAP_PROP_RECTIFICATION (18): 立体相机的纠正位。

在 OpenCV 中,VideoCapture 类的 set() 方法用于设置视频流或摄像头的属性。

  • CAP_PROP_POS_MSEC (0): 设置视频文件当前位置(以毫秒为单位)。
  • CAP_PROP_POS_FRAMES (1): 设置视频文件的帧序号。
  • CAP_PROP_POS_AVI_RATIO (2): 设置视频文件的相对位置(0.0 表示开始,1.0 表示结束)。
  • CAP_PROP_FRAME_WIDTH (3): 设置视频流的帧宽度。
  • CAP_PROP_FRAME_HEIGHT (4): 设置视频流的帧高度。
  • CAP_PROP_FPS (5): 设置视频流的帧率。
  • CAP_PROP_FOURCC (6): 设置视频流的编码格式。
  • CAP_PROP_BRIGHTNESS (10): 设置摄像头的亮度(仅适用于摄像头)。
  • CAP_PROP_CONTRAST (11): 设置摄像头的对比度(仅适用于摄像头)。
  • CAP_PROP_SATURATION (12): 设置摄像头的饱和度(仅适用于摄像头)。
  • CAP_PROP_HUE (13): 设置摄像头的色调(仅适用于摄像头)。
  • CAP_PROP_GAIN (14): 设置摄像头的增益(仅适用于摄像头)。
  • CAP_PROP_EXPOSURE (15): 设置摄像头的曝光(仅适用于摄像头)。

(4)释放资源:

在完成视频捕获后,应该释放 VideoCapture 对象占用的资源:

cap.release()

这将关闭视频文件或摄像头。

(5)示例代码:

以下是一个完整的示例,展示了如何从摄像头读取视频,并显示每一帧:

import cv2# 创建 VideoCapture 对象
cap = cv2.VideoCapture(0)frame_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
frame_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = cap.get(cv2.CAP_PROP_FPS)
brightness = cap.get(cv2.CAP_PROP_BRIGHTNESS)print("Frame size:", frame_width, "x", frame_height)
print("FPS:", fps)
print("Brightness:", brightness)
print("Resolution:", cap.get(cv2.CAP_PROP_FOURCC))# 检查是否成功打开
if not cap.isOpened():print("Error: Camera could not be opened.")    
# 循环读取每一帧
while True:ret, frame = cap.read()if not ret:print("Error: Frame could not be captured.")breakcv2.imshow('Video', frame)# 按 'q' 退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break
# 释放资源
cap.release()
cv2.destroyAllWindows()

这个示例中,我们从默认摄像头读取视频,使用 read() 方法获取每一帧,并在窗口中显示。按下 'q' 键时退出循环并释放资源。

(6)注意事项:

  • 确保在读取视频文件或摄像头时正确设置了路径或索引。
  • 使用 isOpened() 方法检查 VideoCapture 对象是否成功打开。
  • 在完成视频捕获后,不要忘记调用 release() 方法释放资源。

 三、图像金字塔:

图像金字塔(Image Pyramid)是图像处理中的一个重要概念,它是一种用于图像多尺度表示的数据结构。图像金字塔通过递归地对图像进行降采样(subsampling)来构建,每一层都是上一层图像的下采样版本,同时保持图像的宽高比不变。

(1)基本概念:

图像金字塔可以分为两种类型:

  • 高斯金字塔(Gaussian Pyramid):

    • 每一层都是下一层的降采样版本,通常是通过高斯滤波来平滑图像,然后进行降采样(通常是2x2像素块的降采样)。
    • 高斯金字塔主要用于图像分析和处理任务,如图像压缩、图像融合和多尺度边缘检测。
  • 拉普拉斯金字塔(Laplacian Pyramid):

    • 拉普拉斯金字塔是基于高斯金字塔构建的,每一层的拉普拉斯金字塔图像是通过高斯金字塔的相邻两层相减得到的,即Gaussian(n+1) - Gaussian(n)
    • 拉普拉斯金字塔能够表示图像在不同尺度下的细节信息,常用于图像重建和图像分析。

图像金字塔的层级结构使得可以在不同的分辨率下分析图像,这在计算机视觉中的许多应用中非常有用,例如:

  • 尺度不变特征变换(Scale-Invariant Feature Transform, SIFT):用于检测和描述图像中的关键点,对图像进行多尺度分析以找到稳定的特征。
  • 对象识别:通过在不同尺度上分析图像来识别对象。
  • 图像融合:将不同分辨率的图像融合成单一图像。
  • 图像压缩:通过减少每层的分辨率来减少数据量。

在 OpenCV 中,可以使用 pyrDownpyrUp 函数来创建图像金字塔。pyrDown 用于降采样,而 pyrUp 用于上采样。

import cv2# 读取图像
image = cv2.imread("C:\\Users\\86173\\Desktop\\TI\\faves.png")# 创建高斯金字塔
for i in range(5):image = cv2.pyrDown(image)  # 降采样cv2.imshow(f'Layer {i+1}', image)  # 显示每一层cv2.waitKey(500)  # 等待500毫秒cv2.destroyAllWindows()

 

pyrDown 函数被用来连续降采样图像,创建了一个由5层组成的高斯金字塔。每一层都会显示出来,并且每一层的分辨率都是上一层的一半。

(2)pyrDown函数:

cv2.pyrDown 是 OpenCV 库中的一个函数,用于对图像进行高斯金字塔的向下取样,也就是降采样。这个过程通常包括两个步骤:首先使用高斯滤波来平滑图像,然后对图像进行降采样,通常是将图像的尺寸缩小到原来的一半。

函数原型:

在 Python 中,cv2.pyrDown 函数的原型如下:

dst = cv2.pyrDown(src[, dst[, dstsize[, borderType]]])
参数:
  • src:输入图像,必须是 8 位或 32 位浮点数类型的单通道或多通道图像。
  • dst:输出图像,尺寸是输入图像的一半,数据类型与输入图像相同。
  • dstsize:(可选)输出图像的大小。如果指定,它应该是一个元组 (width, height),表示输出图像的宽度和高度。如果省略此参数,输出图像的大小将自动设置为输入图像大小的一半。
  • borderType:(可选)边界像素的类型,用于填充图像边缘。默认值是 BORDER_DEFAULT,其他选项包括 BORDER_CONSTANTBORDER_REPLICATE 等。
应用:
  • 图像金字塔构建:用于创建图像的多尺度表示,这对于尺度不变特征检测和图像融合等任务非常有用。
  • 图像预处理:在进行图像分析之前减小图像尺寸,以减少计算量和存储需求。
  • 多尺度分析:在不同的尺度上分析图像,以提取不同层次的特征。
注意事项:
  • 降采样会导致图像细节的丢失,因此在某些应用中可能需要权衡图像尺寸和质量。
  • cv2.pyrDown 通常与 cv2.pyrUp 配合使用,后者用于图像的向上取样或放大。

(3)cv2.pyrUp 函数:

cv2.pyrUp 是 OpenCV 库中的一个函数,用于对图像进行向上取样,也就是图像的放大操作。这个函数会将图像的尺寸增加,通常是将图像的宽度和高度都翻倍。在放大的过程中,pyrUp 会使用高斯滤波来估计新像素的值,以减少放大过程中可能出现的锯齿或混叠效应。

函数原型:

在 OpenCV 中,pyrUp 函数的原型如下(以 Python 为例):

dst = cv2.pyrUp(src[, dst[, dstsize[, borderType]]])
参数:
  • src:输入图像。
  • dst:输出图像,其尺寸是输入图像的两倍。
  • dstsize:(可选)输出图像的大小。如果不指定,它将自动设置为输入图像大小的两倍。
  • borderType:(可选)边界像素的类型。默认是 BORDER_DEFAULT
应用:
  • 创建图像金字塔,这在多尺度分析和图像融合中非常有用。
  • 放大图像以增加分辨率,例如在图像增强或图像显示之前。
  • 预处理步骤,以改善图像质量或为进一步的图像分析做准备。
注意事项:
  • 使用 pyrUp 时,由于新像素是通过对现有像素的高斯滤波来估计的,因此可能会引入一些模糊。
  • pyrUp 通常与 pyrDown 函数配合使用,后者用于向下取样或图像缩小。

(4) 高斯金字塔:

高斯金字塔(Gaussian Pyramid)是一种在图像处理和计算机视觉领域广泛使用的技术,用于创建图像在不同分辨率下的表示。它通过递归地对图像进行高斯滤波和降采样来构建,每一层都是上一层的降采样版本,图像尺寸逐渐减小,细节逐渐减少。

构建高斯金字塔的步骤:
  • 高斯滤波(Gaussian Smoothing):使用高斯核对原始图像进行平滑处理,以去除噪声和细节。
  • 降采样(Downsampling):将图像的尺寸减半,通常是通过删除偶数行和列来实现。
  • 重复过程:对降采样后的图像重复上述步骤,直到达到所需的层数。
高斯金字塔的特点:
  • 每一层的图像面积是前一层的四分之一。
  • 高斯金字塔可以用于图像分析、特征提取和图像压缩等。
  • 高斯金字塔的层数决定了图像的尺度范围。
在 OpenCV 中构建高斯金字塔:

OpenCV 提供了 pyrDown 函数来实现高斯金字塔的构建。这个函数先对图像进行高斯滤波,然后进行降采样。

import cv2
import numpy as np# 读取图像
image = cv2.imread("C:\\Users\\86173\\Desktop\\TI\\faves.png")# 初始化金字塔列表
gaussian_pyramid = [image]# 构建高斯金字塔
for i in range(4):  # 假设我们想要构建4层金字塔# 使用pyrDown进行降采样downsample_image = cv2.pyrDown(gaussian_pyramid[-1])gaussian_pyramid.append(downsample_image)# 显示每一层金字塔
for i, img in enumerate(gaussian_pyramid):cv2.imshow(f'Layer {i}', img)cv2.waitKey(0)
cv2.destroyAllWindows()

 (5)向上取样和向下取样:

在图像处理中,向上取样(Upsampling)和向下取样(Downsampling)是两种基本的图像缩放技术,它们分别用于增加和减少图像的分辨率。

向下取样(Downsampling)

向下取样是减少图像分辨率的过程,通常用于创建图像金字塔的高层,或者在需要减少数据量时使用。在向下取样过程中,图像的尺寸变小,细节丢失,但图像的主要内容和结构特征通常得以保留。常见的向下取样方法包括:

  • 降采样:直接删除图像中的行和列,通常是偶数行和列。
  • 高斯滤波后降采样:先使用高斯滤波器平滑图像,然后降采样。这种方法可以减少降采样引起的混叠效应。

在 OpenCV 中,可以使用 cv2.pyrDown 函数来实现向下取样:

import cv2# 读取图像
image = cv2.imread("C:\\Users\\86173\\Desktop\\TI\\faves.png")# 向下取样
downsampled_image = cv2.pyrDown(image)# 显示图像
cv2.imshow('Downsampled Image', downsampled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
向上取样(Upsampling)

向上取样是增加图像分辨率的过程,通常用于创建图像金字塔的低层,或者在需要增加图像细节时使用。在向上取样过程中,图像的尺寸变大,但因为原始图像中没有足够的信息来填充新增的像素,所以可能会引入模糊或锯齿效应。常见的向上取样方法包括:

  • 最邻近插值:选择最靠近的新像素位置,用相邻的原像素值填充。
  • 双线性插值:计算新像素位置周围四个原像素值的加权平均值。
  • 双三次插值:使用更复杂的多项式函数来计算新像素值,以获得更平滑的结果。

在 OpenCV 中,可以使用 cv2.pyrUp 函数来实现向上取样:

import cv2# 读取图像
image = cv2.imread("C:\\Users\\86173\\Desktop\\TI\\faves.png")# 向上取样
upsampled_image = cv2.pyrUp(image)# 显示图像
cv2.imshow('Upsampled Image', upsampled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在实际应用中,向上取样和向下取样通常与滤波器结合使例如,高斯滤波器常用于向下取样前的平滑处理,而双线性或双三次插值则常用于向上取样以减少模糊效应。用以优化图像缩放的质量。

(6)拉普拉斯金字塔: 

拉普拉斯金字塔(Laplacian Pyramid)是一种在图像处理中用于多尺度表示的技术,它基于高斯金字塔构建,但提供了一种保存图像细节信息的方法。拉普拉斯金字塔的每一层都是通过高斯金字塔相邻两层的差值来构建的,这样可以保留图像在不同尺度下的细节和边缘信息。

构建拉普拉斯金字塔的步骤:
  • 构建高斯金字塔:首先,通过递归地应用高斯滤波和降采样来构建高斯金字塔。每一层都是上一层的降采样版本,图像尺寸逐渐减小。
  • 计算拉普拉斯层:对于高斯金字塔的每一层,将其降采样后的版本上采样回原始尺寸,然后与原图相减,得到拉普拉斯金字塔的对应层。这个过程可以表示为:
  • 其中,Lapi 是拉普拉斯金字塔的第 i层,Gausi​ 是高斯金字塔的第 i层,Up 是上采样操作。
拉普拉斯金字塔的应用:
  • 图像重建:由于拉普拉斯金字塔保存了从低分辨率到高分辨率的详细信息,它可以用于图像的重建或超分辨率。
  • 图像融合:在图像融合中,拉普拉斯金字塔可以用来合并不同图像的细节,以创建一个综合图像,这在HDR图像处理中尤其有用。
  • 纹理合成:在纹理合成中,拉普拉斯金字塔可以帮助在不同尺度上合成纹理,以产生更自然的结果。
在 OpenCV 中实现拉普拉斯金字塔:

在 OpenCV 中,可以使用 cv2.pyrDown 函数来构建高斯金字塔,并通过上采样和相减操作来构建拉普拉斯金字塔。

import cv2
import numpy as np# 读取图像
image = cv2.imread("C:\\Users\\86173\\Desktop\\TI\\faves.png")# 构建高斯金字塔
gaussian_pyramid = [image]
for i in range(3):  # 假设我们想要构建3层金字塔image = cv2.pyrDown(image)gaussian_pyramid.append(image)# 构建拉普拉斯金字塔
laplacian_pyramid = [gaussian_pyramid[0]]  # 第0层拉普拉斯就是高斯金字塔的第0层
for i in range(1, len(gaussian_pyramid)):up = cv2.pyrUp(gaussian_pyramid[i], dstsize=(gaussian_pyramid[i-1].shape[1], gaussian_pyramid[i-1].shape[0]))laplacian = cv2.subtract(gaussian_pyramid[i-1], up)laplacian_pyramid.append(laplacian)# 显示拉普拉斯金字塔的每层
for i, layer in enumerate(laplacian_pyramid):cv2.imshow(f'Laplacian Layer {i}', layer)
cv2.waitKey(0)
cv2.destroyAllWindows()

首先构建一个高斯金字塔,然后通过上采样和相减操作构建了对应的拉普拉斯金字塔。每一层的拉普拉斯图像都包含了从该层到下一层的详细信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543303.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

#联合体#

目录 定义 联合体的对齐方式 举个栗子🌰 联合体判断小端或大端 定义 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间,地址一样(所以联合也叫共用体)。 联合体…

【揭秘大脑与AI的鸿沟:电化学信号与非线性动态交互的奥秘】

目录 【揭秘大脑与AI的鸿沟:电化学信号与非线性动态交互的奥秘】 1. 信息传递的奇迹:电化学信号的奥秘 2. 非线性动态交互:大脑的智慧之源 3. 结构与功能的鸿沟:从并行分布到有限层次 结语:探索未知的边界 【揭秘大脑与AI的鸿沟:电化学信号与非线性动态交互的奥秘】…

sql serve时间的比较:船舶是否在线,基站网络是否在线

文章目录 引言I 在线船舶查询在线或者离线船舶显示在线状态统计在线船舶II 基站网络是否在线III 知识扩展MyBatis引言 I 在线船舶 查询在线或者离线船舶 假定2个小时之内有报位的数据认为在线 查询7天之内有报位的离线船舶AND s.dwtime BETWEEN dateadd(day,-7,GETDATE()

怎么把excel翻译成英文?这些翻译技巧记得收藏

在处理Excel数据时,我们常常会遇到多语言的数据集,这无疑给数据分析和整理带来了不小的挑战。 幸运的是,随着技术的发展,现在有多种工具可以帮助我们进行Excel中的批量翻译,这些工具以其强大的翻译功能和便捷的操作方…

Unity 设计模式 之 行为型模式 -【访问者模式】【模板模式】【策略模式】

Unity 设计模式 之 行为型模式 -【访问者模式】【模板模式】【策略模式】 目录 Unity 设计模式 之 行为型模式 -【访问者模式】【模板模式】【策略模式】 一、简单介绍 二、访问者模式(Visitor Pattern) 1、什么时候使用访问者模式 2、使用访问者模…

这是一篇给Java小白看的JVM文章

文章目录 前言从 Java 的跨平台特性说起Java 跨平台的实现:JVMJVM 的定义跨平台问题说明从编码到运行 JVM 已成为规范JVM 的后续了解总结 前言 很多Java开发人员,还不清楚JVM是什么,就直接涉足JVM调优。 很多Java开发人员,说起J…

Deepgram推出新API:让跨语言交流不再是梦!

​ Deepgram 在人工智能飞速发展的今天,语音交互技术正在成为我们与机器沟通的主要方式。然而,现有的语音AI技术在速度、成本和对话质量等方面仍存在诸多问题。 为了解决这些痛点,语音识别领域的佼佼者Deepgram公司推出了一款全新的文本转语音…

精准运营,提升排名:亚马逊商品详情数据接口助力商家成长

一、接口重要性与作用 亚马逊商品详情数据接口是电商运营中不可或缺的桥梁,它连接着商家与消费者,承载着商品信息的精准传递与高效管理。通过此接口,商家能够实时获取并更新商品详情,从而显著提升运营效率,增强用户体…

如何用ComfyUI生成专业电商产品背景图?

如何用ComfyUI生成专业电商产品背景图——简单易用的工作流指南 随着电商行业的飞速发展,产品展示的质量直接影响到消费者的购买决策。而通过AI生成的背景图,不仅提升了图片的质感,还能节省大量后期处理时间。今天我们要介绍的是利用ComfyUI生…

idea上使用tomcat运行web项目

idea上使用tomcat运行web项目 首先需要安装tomcat,可以查看我上一篇文章 如果你已经配置tomcat,这里不需要改动。如果未配置,需要在这里选择你tomcat目录 修改下面的上下文,也就是网页上访问时http://localhost:8080/后面拼…

Linux c文件中创建一个由汇编代码构成的函数方法

c文件中经常使用asm完成嵌入式汇编&#xff0c;例如 #include <stdio.h>void a() {int result 0;int input 1;asm volatile ("movl %1, %0\n": "r"(result): "r"(input));printf("result %d\n", result);printf("input…

2024年高分项目管理系统推荐,奥博思 PowerProject 不容错过

PowerProject 支持项目全生命周期管理&#xff0c;涵盖立项、计划、执行监控与收尾的各个阶段。系统是包含项目管理、项目集管理、项目组合管理的一站式企业级项目管理平台。 PowerProject 是目前市面上功能相当齐全的一款项目管理软件&#xff0c;大中型企业软件选型首选。 立…

导出导入Oracle数据库使用黑框命令方式exp、imp【亲测】

下载工具 根据自己数据库的版本下载&#xff0c;以v19为例&#xff1a; 下载基础包Basic Package和工具包Tools Package 两个压缩包中的文件夹一样&#xff0c;但内容不一样&#xff0c;将两个压缩包中的文件解压合并到一起 https://www.oracle.com/database/technologies/inst…

复选框选择示例【JavaScript】

这段代码实现的功能是一个简单的复选框示例&#xff0c;它可以进行全选、反选和取消选中操作。 实现功能&#xff1a; 1. 全选&#xff1a;当点击标签"全选"旁边的复选框时&#xff0c;该页面上所有具有"item"类的复选框都会被选中&#xff08;或者取消选…

linux基础(二)远程连接、cd、rm、cp、mv、cat、绝对路径、管道符、

1.远程链接: SecureCRT、xshell&#xff1a;windows连接linux的工具 SecureFX、xftp&#xff1a;用于远程传输文件。 远程连接&#xff1a; windows远程连接windows&#xff1a;mstsc administrator windows远程连接linux&#xff1a;SecureCRT、xshell、 linux远程…

DK5V100R20H 同步整流芯片12V2.4A 封装SM-7

高性能双引脚同步整流芯片 DK5V100R20H是一款简单高效率的同步整流芯片&#xff0c;只有A&#xff0c;K两个引脚&#xff0c;分别对应肖特基二极管的PN管脚。芯片内部集成了100V功率NMOS管&#xff0c;可以大幅降低二极管导通损耗&#xff0c;提高整机效率&#xff0c;取代或替…

Docker全家桶:技术架构演进之路

在学习Docker之前&#xff0c;我们需要了解每种技术架构以及如何演进的&#xff0c;熟悉Docker在架构中的核心作用。在此&#xff0c;我们介绍一个从百级别的并发到千万级别甚至亿级别的并发情况下&#xff0c;服务端架构的演进过程&#xff0c;同时列举出每个阶段会遇到的问题…

LLM大模型一些碎片知识

预训练和微调 预训练阶段&#xff1a;使用公开数据经过预训练过程得到预训练模型&#xff0c;预训练模型具备语言的初步理解&#xff1b;训练周期比较长&#xff1b;微调阶段1&#xff1a;SFT&#xff08;指令微调/有监督微调&#xff09;。如果想要预训练模型在某个垂直领域&a…

本周宣讲提醒-线上专场——香港科技大学工学院2025/2026年度硕士研究生(MSc)项目招生宣讲会

&#x1f4c6;本周宣讲提醒-线上专场 &#x1f514;香港科技大学工学院2025/2026年度硕士研究生&#xff08;MSc&#xff09;项目招生宣讲会 &#x1f4cd;香港科技大学工学院大挑战研究暨研究生课程信息网络研讨会-线上专场 &#x1f559;时间&#xff1a;2024年9月24日&…

共享打印机,局域网搜不到

如果共享打印机后&#xff0c;局域网内其余机器检索不到 1. 排查 是否启用来宾账户&#xff08;Guest&#xff09; 2. 网络和共享中心->更改高级共享设置->启用网络发现、启用文件和打印机共享、关闭密码保护共享 排查基本可以解决搜索不到打印机问题