我的Opencv

1.安装Opencv

pip install opencv-python

2.读取图像

 

3.写图像

4. 显示图像

5.waitKey() 

6.读视频并播放视频

7.写视频

8. 获取摄像头视频

 9.色彩转换

# BGR to GRAY
imgGRAY = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# BGR to RGB
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# BGR to HSV
imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# BGR to YCrCb (also known as YCC)
imgYCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)

10.图像变换

cv2.resize()

函数名称:
cv2.resize

函数参数讲解:

  • src: 输入图像。
  • dsize: 输出图像的大小。可以是 (width, height) 的元组形式。如果设置为 (0, 0),则必须提供 fx 和 fy
  • fx: 沿着 x 轴(水平方向)的缩放因子。当 dsize 设置为 (0, 0) 时有效。
  • fy: 沿着 y 轴(垂直方向)的缩放因子。当 dsize 设置为 (0, 0) 时有效。
  • interpolation: 插值方法。常用的有 cv2.INTER_AREA(用于缩小)、cv2.INTER_CUBIC(用于放大,较慢但效果好)、cv2.INTER_LINEAR(默认,适用于所有情况)。

示例代码:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 缩放到指定大小
resized_img = cv2.resize(img, (800, 600), interpolation=cv2.INTER_LINEAR)# 按比例缩放
scaled_img = cv2.resize(img, (0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)

cv2.flip()

函数名称:
cv2.flip

函数参数讲解:

  • src: 输入图像。
  • flipCode: 翻转方向标志。0 表示沿 x 轴翻转(上下翻转),1 表示沿 y 轴翻转(左右翻转),-1 表示沿 x 轴和 y 轴同时翻转(对角线翻转)。

示例代码:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 上下翻转
flipped_img_vertical = cv2.flip(img, 0)# 左右翻转
flipped_img_horizontal = cv2.flip(img, 1)# 对角线翻转
flipped_img_both = cv2.flip(img, -1)

cv2.warpAffine 平移、缩放、旋转

函数名称:
cv2.warpAffine

函数参数讲解:

  • src: 输入图像。
  • M: 2x3 变换矩阵。
  • dsize: 输出图像的大小 (width, height)
  • flags: 插值方法,默认为 cv2.INTER_LINEAR
  • borderMode: 边界填充方式,默认为 cv2.BORDER_CONSTANT
  • borderValue: 如果边界模式是 cv2.BORDER_CONSTANT,则使用的边界颜色,默认为黑色。

示例代码:

平移变换:

import cv2
import numpy as np# 加载图像
img = cv2.imread('image.jpg')# 定义平移矩阵
tx, ty = 100, 50  # x轴和y轴上的平移量
M_translation = np.float32([[1, 0, tx], [0, 1, ty]])# 应用平移
translated_img = cv2.warpAffine(img, M_translation, (img.shape[1], img.shape[0]))

 缩放变换:

# 定义缩放矩阵
fx, fy = 0.5, 0.5  # 缩放比例
M_scaling = np.float32([[fx, 0, 0], [0, fy, 0]])# 应用缩放
scaled_img = cv2.warpAffine(img, M_scaling, (int(w * fx), int(h * fy)))

旋转变换:

# 获取图像中心点
(h, w) = img.shape[:2]
center = (w // 2, h // 2)# 定义旋转矩阵
angle = 45  # 旋转角度
scale = 1.0  # 缩放比例
M_rotation = cv2.getRotationMatrix2D(center, angle, scale)# 应用旋转
rotated_img = cv2.warpAffine(img, M_rotation, (w, h))

三点仿射变换

函数名称:
cv2.getAffineTransform

函数参数讲解:

  • pts1: 输入图像中的三个点坐标。
  • pts2: 输出图像中对应的三个点坐标。

示例代码:

import cv2
import numpy as np# 加载图像
img = cv2.imread('image.jpg')# 定义输入和输出图像中的三个点
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[10, 100], [200, 50], [100, 250]])# 计算仿射变换矩阵
M_affine = cv2.getAffineTransform(pts1, pts2)# 应用仿射变换
affine_transformed_img = cv2.warpAffine(img, M_affine, (img.shape[1], img.shape[0]))

透视变换

函数名称:
cv2.getPerspectiveTransform

函数参数讲解:

  • src: 输入图像中的四个点坐标。
  • dst: 输出图像中对应的四个点坐标。

示例代码:

import cv2
import numpy as np# 加载图像
img = cv2.imread('image.jpg')# 定义输入和输出图像中的四个点
pts_src = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
pts_dst = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]])# 计算透视变换矩阵
M_perspective = cv2.getPerspectiveTransform(pts_src, pts_dst)# 应用透视变换
perspective_transformed_img = cv2.warpPerspective(img, M_perspective, (300, 300))

11.图像平滑滤波

cv2.blur()

函数名称:
cv2.blur

操作介绍:
均值滤波(Mean Filtering)是一种简单的线性滤波器,它通过计算图像中每个像素邻域的平均值来平滑图像。这种滤波方法有助于减少图像中的高斯噪声,但可能会导致边缘模糊。均值滤波总是进行归一化处理,即每个像素的贡献是相等的。

函数参数介绍:

  • src: 输入图像。
  • ksize: 均值滤波器的尺寸 (width, height)。通常是一个奇数的正方形,例如 (3, 3) 或 (5, 5)
  • anchor: 锚点,默认是中心点 (-1, -1),表示内核的中心作为锚点。可以指定其他位置来改变滤波器的行为。
  • borderType: 边界填充方式,如 cv2.BORDER_DEFAULT

代码示例:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 应用均值滤波
mean_filtered_img = cv2.blur(img, (5, 5))# 显示结果
cv2.imshow('Mean Filtered Image', mean_filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.boxFilter()

函数名称:
cv2.boxFilter

操作介绍:
方框滤波(Box Filter)也是一种简单的线性滤波器,它通过计算图像中每个像素邻域的平均值来平滑图像。与均值滤波不同的是,方框滤波允许在计算平均值时考虑边界外的像素,这可以通过设置参数来控制。方框滤波对于减少噪声和模糊化图像非常有用。

函数参数介绍:

  • src: 输入图像。
  • ddepth: 输出图像的深度。如果为 -1,则输出图像将具有与输入图像相同的深度。
  • ksize: 方框滤波器的尺寸 (width, height)。通常是一个奇数的正方形,例如 (3, 3) 或 (5, 5)
  • normalize: 如果为 True,则滤波器会进行归一化,即除以核大小的面积;如果为 False,则不会进行归一化,这相当于对每个像素应用了一个常量加权。
  • anchor: 锚点,默认是中心点 (-1, -1),表示内核的中心作为锚点。可以指定其他位置来改变滤波器的行为。
  • borderType: 边界填充方式,如 cv2.BORDER_DEFAULT

代码示例:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 应用方框滤波
box_filtered_img = cv2.boxFilter(img, -1, (5, 5), normalize=True)# 显示结果
cv2.imshow('Box Filtered Image', box_filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.GaussianBlur()

函数名称:
cv2.GaussianBlur

操作介绍:
高斯滤波(Gaussian Filtering)是一种非均匀的线性滤波器,它使用高斯分布作为权重对邻域内的像素进行加权平均。高斯滤波在去除高斯噪声方面效果很好,同时尽量保留图像的边缘信息。高斯滤波器的权重取决于距离中心像素的距离,离得越近的像素权重越大,离得远的像素权重越小。

函数参数介绍:

  • src: 输入图像。
  • ksize: 高斯滤波器的尺寸 (width, height)。通常是一个奇数的正方形,例如 (3, 3) 或 (5, 5)。如果设置为 (0, 0),则根据 sigmaX 自动确定。
  • sigmaX: 沿 X 轴方向的标准差。如果设置为 0,则从 ksize 计算得出。
  • sigmaY: 沿 Y 轴方向的标准差。如果设置为 0,则等于 sigmaX
  • borderType: 边界填充方式,如 cv2.BORDER_DEFAULT

代码示例:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 应用高斯滤波
gaussian_blurred_img = cv2.GaussianBlur(img, (5, 5), 0)# 显示结果
cv2.imshow('Gaussian Blurred Image', gaussian_blurred_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.medianBlur()

函数名称:
cv2.medianBlur

操作介绍:
中值滤波(Median Filtering)是一种非线性滤波器,它通过替换每个像素值为其邻域内的中值来平滑图像。中值滤波对于去除椒盐噪声特别有效,因为它能够很好地保护图像的边缘和细节,而不会像均值或高斯滤波那样导致边缘模糊。

函数参数介绍:

  • src: 输入图像。
  • ksize: 中值滤波器的尺寸,必须是大于1的奇数,如 35 等。

代码示例:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 应用中值滤波
median_filtered_img = cv2.medianBlur(img, 5)# 显示结果
cv2.imshow('Median Filtered Image', median_filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.bilateralFilter()

函数名称:
cv2.bilateralFilter

操作介绍:
双边滤波(Bilateral Filtering)是一种高级的非线性滤波器,它不仅考虑了空间邻近度(即像素之间的距离),还考虑了像素强度差异(即颜色或灰度值)。因此,双边滤波能够在保持边缘的同时有效地减少噪声。它适用于需要保持图像特征的场景,如图像增强、卡通效果生成等。

函数参数介绍:

  • src: 输入图像。
  • d: 每个像素领域直径,如果为非正值,则从 sigmaSpace 计算。
  • sigmaColor: 颜色空间的标准差,较大的值意味着更远的颜色也会被混合到一起,产生更大的半相等颜色区域。
  • sigmaSpace: 坐标空间的标准差(以像素为单位),较大的值意味着更远的像素也会被混合到一起,只要它们的颜色足够接近。如果 d > 0,它指定了邻域大小且不需要使用 sigmaSpace

代码示例:

import cv2# 加载图像
img = cv2.imread('image.jpg')# 应用双边滤波
bilateral_filtered_img = cv2.bilateralFilter(img, 9, 75, 75)# 显示结果
cv2.imshow('Bilateral Filtered Image', bilateral_filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.filter2D()

函数名称:
cv2.filter2D

操作介绍:
2D卷积滤波(2D Convolution Filtering)是一种通用的滤波方法,它允许用户定义自定义的卷积核(kernel)来对图像进行滤波。卷积核可以是任何大小的矩阵,并且可以根据特定的应用需求设计。2D卷积滤波广泛应用于各种图像处理任务,如边缘检测、锐化、模糊等。

函数参数介绍:

  • src: 输入图像。
  • ddepth: 输出图像的深度。如果为 -1,则输出图像将具有与输入图像相同的深度。
  • kernel: 卷积核(滤波器),一个二维数组。
  • anchor: 锚点,默认是中心点 (-1, -1),表示内核的中心作为锚点。可以指定其他位置来改变滤波器的行为。
  • delta: 可选偏移量,添加到滤波后的图像上,默认为 0
  • borderType: 边界填充方式,如 cv2.BORDER_DEFAULT

代码示例:

import cv2
import numpy as np# 加载图像
img = cv2.imread('image.jpg')# 定义自定义卷积核
kernel = np.ones((5, 5), np.float32) / 25# 应用2D卷积滤波
convoluted_img = cv2.filter2D(img, -1, kernel)# 显示结果
cv2.imshow('2D Convolved Image', convoluted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

12.阈值处理

cv2.threshold()

函数名称:
cv2.threshold

操作介绍:
全局阈值处理是一种将图像转换为二值图像的简单方法,它根据一个全局阈值来决定每个像素是属于前景(白色)还是背景(黑色)。OpenCV提供了多种全局阈值处理的方法,包括二值化、反二值化、截断、超阈值和低阈值处理。这些方法适用于不同的应用场景,如文档扫描、字符识别等。

函数参数介绍:

  • src: 输入图像,通常是一个灰度图像。
  • thresh: 阈值,用于比较图像中的像素值。
  • maxval: 当像素值超过(或在某些情况下低于)阈值时应用的最大值。
  • type: 阈值处理类型,可以是以下之一:
    • cv2.THRESH_BINARY: 二值化阈值处理,如果像素值大于阈值,则设为 maxval,否则设为 0
    • cv2.THRESH_BINARY_INV: 反二值化阈值处理,如果像素值大于阈值,则设为 0,否则设为 maxval
    • cv2.THRESH_TRUNC: 截断阈值处理,如果像素值大于阈值,则设为阈值,否则保持不变。
    • cv2.THRESH_TOZERO: 超阈值处理,如果像素值大于阈值,则设为 0,否则保持不变。
    • cv2.THRESH_TOZERO_INV: 低阈值处理,如果像素值小于阈值,则设为 0,否则保持不变。

代码示例:

import cv2# 加载图像并转换为灰度
img = cv2.imread('image.jpg', 0)# 二值化阈值处理
ret, binary_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)# 反二值化阈值处理
ret, binary_inv_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)# 截断阈值处理
ret, trunc_img = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)# 超阈值处理
ret, tozero_img = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)# 低阈值处理
ret, tozero_inv_img = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)# 显示结果
cv2.imshow('Binary Image', binary_img)
cv2.imshow('Binary Inv Image', binary_inv_img)
cv2.imshow('Trunc Image', trunc_img)
cv2.imshow('ToZero Image', tozero_img)
cv2.imshow('ToZero Inv Image', tozero_inv_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.adaptiveThreshold()

函数名称:
cv2.adaptiveThreshold

操作介绍:
自适应阈值处理是一种改进的全局阈值处理方法,它不是使用一个固定的全局阈值,而是根据图像的不同区域动态地调整阈值。这对于光照不均匀或复杂背景的图像非常有用。自适应阈值处理有两种常用的方法:均值法和高斯加权法。

函数参数介绍:

  • src: 输入图像,通常是一个灰度图像。
  • maxValue: 当像素值超过(或在某些情况下低于)计算出的阈值时应用的最大值。
  • adaptiveMethod: 自适应阈值计算方法,可以是以下之一:
    • cv2.ADAPTIVE_THRESH_MEAN_C: 使用邻域内像素的平均值作为阈值。
    • cv2.ADAPTIVE_THRESH_GAUSSIAN_C: 使用邻域内像素的加权和(高斯窗口)作为阈值。
  • thresholdType: 阈值处理类型,通常是 cv2.THRESH_BINARY 或 cv2.THRESH_BINARY_INV
  • blockSize: 邻域大小(奇数),用于计算阈值。
  • C: 从计算出的平均值或加权和中减去的常数。

代码示例:

import cv2# 加载图像并转换为灰度
img = cv2.imread('image.jpg', 0)# 自适应阈值处理(均值法)
adaptive_mean_img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)# 自适应阈值处理(高斯加权法)
adaptive_gaussian_img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)# 显示结果
cv2.imshow('Adaptive Mean Image', adaptive_mean_img)
cv2.imshow('Adaptive Gaussian Image', adaptive_gaussian_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

迭代阈值处理(Otsu's Binarization)

函数名称:
cv2.threshold with cv2.THRESH_OTSU

操作介绍:
迭代阈值处理,特别是大津法(Otsu's Method),是一种自动确定最佳阈值的方法。它通过最大化类间方差来找到最佳的二值化阈值,特别适合于双峰直方图的图像。大津法可以在 cv2.threshold 函数中通过添加 cv2.THRESH_OTSU 标志来实现。

函数参数介绍:

  • src: 输入图像,通常是一个灰度图像。
  • thresh: 初始阈值,当使用 cv2.THRESH_OTSU 时,这个值会被忽略。
  • maxval: 当像素值超过(或在某些情况下低于)阈值时应用的最大值。
  • type: 阈值处理类型,通常是 cv2.THRESH_BINARY 或 cv2.THRESH_BINARY_INV,并且需要加上 cv2.THRESH_OTSU

代码示例:

13.图像边缘检测 

cv2.Sobel()

函数名称:
cv2.Sobel

操作介绍:
Sobel边缘检测是一种基于一阶导数的梯度算子,用于计算图像中每个像素点的水平和垂直方向上的梯度。Sobel算子通过一个3x3的卷积核来检测图像中的边缘。它对噪声有一定的抑制作用,并且能够突出图像中的高梯度区域,即边缘。Sobel算子可以分别计算X轴和Y轴方向的梯度,也可以同时计算两个方向的梯度。

函数参数介绍:

  • src: 输入图像,通常是灰度图像。
  • ddepth: 输出图像的深度,通常为 -1 表示与输入图像相同深度,或使用 cv2.CV_16S 等类型以避免溢出。
  • dx: X轴方向的导数阶数,通常为 1
  • dy: Y轴方向的导数阶数,通常为 1
  • ksize: Sobel算子的尺寸,必须是 135 或 7。默认为 3
  • scale: 可选比例因子,默认为 1
  • delta: 可选偏移量,默认为 0
  • borderType: 边界填充方式,如 cv2.BORDER_DEFAULT

代码示例:

import cv2
import numpy as np# 加载图像并转换为灰度
img = cv2.imread('image.jpg', 0)# 应用Sobel算子(X轴方向)
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
sobelx = np.uint8(np.absolute(sobelx))# 应用Sobel算子(Y轴方向)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
sobely = np.uint8(np.absolute(sobely))# 合并X轴和Y轴方向的梯度
sobel_combined = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)# 显示结果
cv2.imshow('Sobel X', sobelx)
cv2.imshow('Sobel Y', sobely)
cv2.imshow('Sobel Combined', sobel_combined)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.Laplacian()

函数名称:
cv2.Laplacian

操作介绍:
拉普拉斯边缘检测是一种基于二阶导数的梯度算子,用于检测图像中的边缘。拉普拉斯算子通过一个3x3的卷积核来计算图像中每个像素点的二阶导数。它对图像中的局部变化非常敏感,可以检测到图像中的细小边缘和细节。然而,拉普拉斯算子对噪声也很敏感,因此在应用之前通常需要进行预平滑处理。

函数参数介绍:

  • src: 输入图像,通常是灰度图像。
  • ddepth: 输出图像的深度,通常为 -1 表示与输入图像相同深度,或使用 cv2.CV_16S 等类型以避免溢出。
  • ksize: 拉普拉斯算子的尺寸,必须是 135 或 7。默认为 1
  • scale: 可选比例因子,默认为 1
  • delta: 可选偏移量,默认为 0
  • borderType: 边界填充方式,如 cv2.BORDER_DEFAULT

代码示例:

import cv2
import numpy as np# 加载图像并转换为灰度
img = cv2.imread('image.jpg', 0)# 应用拉普拉斯算子
laplacian = cv2.Laplacian(img, cv2.CV_64F)
laplacian = np.uint8(np.absolute(laplacian))# 显示结果
cv2.imshow('Laplacian', laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.Canny()

函数名称:
cv2.Canny

操作介绍:
Canny边缘检测是一种多阶段的边缘检测算法,广泛认为是最有效的边缘检测方法之一。Canny算法包括以下几个步骤:

  1. 高斯滤波: 用于减少图像中的噪声。
  2. 计算梯度强度和方向: 使用Sobel算子或其他梯度算子计算图像中每个像素点的梯度强度和方向。
  3. 非极大值抑制: 保留沿边缘方向的最大梯度值,抑制其他非最大值。
  4. 双阈值处理: 使用高低两个阈值来确定哪些边缘像素是强边缘,哪些是弱边缘。
  5. 边缘跟踪: 通过连接强边缘和相邻的弱边缘来形成完整的边缘。

Canny边缘检测能够在保持低错误率的同时检测到真实的边缘,因此在许多计算机视觉任务中非常有用。

函数参数介绍:

  • src: 输入图像,通常是灰度图像。
  • threshold1: 第一个阈值,用于双阈值处理中的低阈值。
  • threshold2: 第二个阈值,用于双阈值处理中的高阈值。
  • apertureSize: Sobel算子的孔径大小,默认为 3
  • L2gradient: 如果为 True,则使用更精确的 L2 范数来计算梯度幅值;如果为 False,则使用更快但稍微不准确的 L1 范数。

代码示例:

import cv2# 加载图像并转换为灰度
img = cv2.imread('image.jpg', 0)# 应用Canny边缘检测
edges = cv2.Canny(img, 100, 200)# 显示结果
cv2.imshow('Canny Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

 14.Opencv的图像特征提取

纹理特征:LBP(局部二值模式)

形状特征:HOG(方向梯度直方图),SIFT(尺度不变特征变换)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言及MongoDB数据库安装配置详解!

Go语言安装 首先讲一下go语言的安装,这部分可直接从官网下载,基本上一键配置的: 官网地址:All releases - The Go Programming Language 选择自己对应系统的安装包,这里官网提供了5种不同的包可自行下载 之后便是默认…

Redis - Token JWT 概念解析及双token实现分布式session存储实战

Token 定义:令牌,访问资源接口(API)时所需要的资源凭证 一、Access Token 定义:访问资源接口(API)时所需要的资源凭证,存储在客户端 组成 组成部分说明uid用户唯一的身份标识time…

sentinel限流+其他

quick-start | Sentinel sentinel 作用 限流 熔断降级 1,限制什么 QPS 并发线程数 2,限制什么 资源,什么资源 服务,方法,接口,或者一段代码 3,实现方式 配置规则 注解 其他 Java常见5种限流…

JVM实战—2.JVM内存设置与对象分配流转

大纲 1.JVM内存划分的原理细节 2.对象在JVM内存中如何分配如何流转 3.部署线上系统时如何设置JVM内存大小 4.如何设置JVM堆内存大小 5.如何设置JVM栈内存与永久代大小 6.问题汇总 1.JVM内存划分的原理细节 (1)背景引入 (2)大部分对象的存活周期都是极短的 (3)少数对象…

Eclipse常用快捷键详解

文章目录 Eclipse常用快捷键详解一、引言二、编辑快捷键三、选择和移动快捷键四、行操作快捷键五、搜索和导航快捷键六、调试快捷键七、重构快捷键八、其他快捷键九、使用案例场景一:代码编写代码示例 场景二:代码调试场景三:代码重构代码示例…

oscp学习之路,Kioptix Level2靶场通关教程

oscp学习之路,Kioptix Level2靶场通关教程 靶场下载:Kioptrix Level 2.zip 链接: https://pan.baidu.com/s/1gxVRhrzLW1oI_MhcfWPn0w?pwd1111 提取码: 1111 搭建好靶场之后输入ip a看一下攻击机的IP。 确定好本机IP后,使用nmap扫描网段&…

linux系统上SQLPLUS的重“大”发现

SQL plus版本: [oraclepg-xc2 ~]$ sqlplus -v SQL*Plus: Release 19.0.0.0.0 - Production Version 19.3.0.0.0 操作系统:CentOS Linux 7 (Core) 数据库:Oracle 19c Version 19.3.0.0.0 同样的SQL脚本在windos CMD sqlplus 执行没问题。…

Qt使用QZipWriter和QZipReader来解压、压缩文件

首先感谢这位博主的无私奉献:Qt - 实现压缩文件、文件夹和解压缩操作 - [BORUTO] - 博客园 多文件和目录压缩时,不改变原始文件和目录的相对位置结构,需要在addFile和addDirectory时,需要带上相对路径,如下&#xff1…

命令行之巅:Linux Shell编程的至高艺术(中)

文章一览 前言一、输入/输出及重定向命令1.1 输入/输出命令1.1.1 read命令1.1.2 echo命令 1.2 输入/输出重定向1.3 重定向深入讲解1.4 Here Document1.4.1 /dev/null 文件 二、shell特殊字符和命令语法2.1 引号2.1.1 双引号2.1.2 单引号2.1.3 倒引号 2.2 注释、管道线和后台命令…

【ANGULAR网站开发】初始环境搭建

1. 初始化angular项目 1.1 创建angular项目 需要安装npm和nodejs,这边不在重新安装 直接安装最新版本的angular npm install -g angular/cli安装指定大版本的angular npm install -g angular/cli181.2 启动angular 使用idea启动 控制台启动 ng serve启动成功…

Unity3D仿星露谷物语开发8之角色移动

1、目标 通过键盘上的上下左右控制角色移动,默认情况下是run,按住Shift为walk。 2、流程 (1)优化Settings代码 此时的Settings.cs完整代码如下: using UnityEngine;public static class Settings {// Player Moveme…

使用Python获取PDF文本和图片的精确位置

在处理和分析PDF文档时,获取文本和图片在页面上的精确位置是一个重要的操作。通过确定这些元素的具体坐标,我们可以实现对PDF内容的更精细控制和理解,这对于自动化文档处理、信息提取以及内容重组等工作流程尤为关键。通过Python编程语言&…

浅谈ORACLE中间件SOA BPM,IDM,OID,UCM,WebcenterPortal服务器如何做迁移切换

背景:某集团企业需要将oracle中间件全套产品,包含SOA BPM,IDM,OID,UCM,Webcenter Portal等全套中间件服务器进行迁移,从物理机迁移到虚拟化机器,同时,将现有的单节点测试服务器优化成为高可用的集群服务器,如下是核心迁…

Ubuntu网络配置(桥接模式, nat模式, host主机模式)

windows上安装了vmware虚拟机, vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式;nat模式;host模式 一、桥接模式 所谓桥接模式,也就是虚拟机与宿主机处于同一个网段, 宿主机…

300多种复古手工裁剪拼贴艺术时尚字母、数字、符号海报封面Vlog视频MOV+PNG素材

300复古时尚大小写字母、数字、符号拼贴海报封面平面设计Vlog视频标题动画 Overlay - Cut-Out Letters Animations Pack - Animated Letters, Numbers, and Symbols 使用 Cut-Out Letters Animations Pack 提升您的内容!包含 300多个高品质动画资源,包括…

探索Flink动态CEP:杭州银行的实战案例

摘要:本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容: Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…

ViT-Reg:面向tinyML平台的回归聚焦型硬件感知微调Vision Transformer

论文标题:ViT-Reg: Regression-Focused Hardware-Aware Fine-Tuning for ViT on tinyML Platforms 作者信息:Md Ragib Shaharear、Arnab Neelim Mazumder 和 Tinoosh Mohsenin,分别来自约翰霍普金斯大学电气与计算机工程系和马里兰大学巴尔的…

基于OpenCV和Python的人脸识别系统_django

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 公告信息管理 操作日志管理 用户登录界面 用户…

【原创学习笔记】近期项目中使用的西门子V20变频器总结(上篇)

现场V20 22kW变频器如图所示 进线分别为L1,L2,L3,PE线,出现分别为U,V,W接电机 在西门子官网查询手册后,查询可知可以通过多种方式控制变频器,比如:面板(BOP)控制,端子(NPN/PNP&…

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录 一、根据名字进行自动装配--byName 二、根据类型进行自动装配 byType 本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。 一、根据名字进行自动装配--byName Us…