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

Python中opencv的一些函数及应用

Sobel 算子函数

功能: Sobel 算子用于计算图像的梯度(变化率),常用于边缘检测。它通过对图像应用一个基于一阶导数的滤波器来强调图像中的边缘部分,特别是水平和垂直方向上的边缘。通过计算图像的梯度,可以获得图像中亮度变化较大的地方,这些地方通常是物体的边界。

Sobel 算子有两个方向的变体:

  • Sobel X:计算水平方向的梯度。
  • Sobel Y:计算垂直方向的梯度。

Sobel 算子函数:cv2.Sobel()

函数原型

cv2.Sobel(src, ddepth, dx, dy, ksize=3, scale=1, delta=0, borderType=cv2.BORDER_DEFAULT)

参数

  1. src (InputArray):

    • 输入图像,必须是灰度图像(单通道),通常是 uint8float32 类型。
  2. ddepth (int):

    • 输出图像的深度(数据类型)。通常选择:
      • cv2.CV_8U:8位无符号整数(用于图像显示)。
      • cv2.CV_32F:32位浮动点(用于更高精度的计算)。
      • cv2.CV_64F:64位浮动点(高精度计算)。
  3. dx (int):

    • x方向的导数阶数。
    • dx=1 表示计算水平方向的梯度,dx=0 表示不计算水平方向的导数。
  4. dy (int):

    • y方向的导数阶数。

    • dy=1 表示计算垂直方向的梯度,dy=0 表示不计算垂直方向的导数。

返回值

  • 返回与输入图像大小相同的图像,表示计算得到的梯度图。其每个像素值代表在该位置的梯度强度。
import cv2img = cv2.imread("shudu.png")img_sobel = cv2.Sobel(img, -1, 0,1, ksize=3)img_sobel2 = cv2.Sobel(img, -1, 1,0, ksize=3)cv2.imshow("img", img)
cv2.imshow("img_sobel", img_sobel)
cv2.imshow("img_sobel2", img_sobel2)
cv2.waitKey(0)

Laplacian 算子函数

功能: Laplacian 算子用于图像的二阶导数处理,能够检测图像中的边缘和细节,尤其是图像亮度变化非常显著的地方。它是基于图像的二阶导数,能够揭示图像中变化急剧的区域(例如,边缘和纹理)。

与 Sobel 算子主要处理图像一阶导数的不同,Laplacian 算子通过计算图像的二阶导数来增强边缘信息,特别适用于检测图像中亮度变化较大的部分。

Laplacian 算子可以用来:

  1. 检测边缘:通过高亮变化剧烈的区域(边缘)来找到图像的结构。
  2. 增强细节:增强图像中的细节部分,尤其是图像对比度较低的地方。
  3. 图像预处理:通常用于后续的图像分析,如分割、特征提取等。

Laplacian 算子函数:cv2.Laplacian()

函数原型

cv2.Laplacian(src, ddepth, ksize=3, scale=1, delta=0, borderType=cv2.BORDER_DEFAULT)

参数

  1. src (InputArray):

    • 输入图像,必须是灰度图像(单通道),通常是 uint8float32 类型。彩色图像需要先转换为灰度图像。
  2. ddepth (int):

    • 输出图像的深度(数据类型)。常用的选项包括:
      • cv2.CV_8U:8位无符号整数(用于图像显示)。
      • cv2.CV_32F:32位浮动点(用于精确计算)。
      • cv2.CV_64F:64位浮动点(用于高精度计算)。
  3. ksize (int, 可选):

    • 卷积核的大小。常用值为 1、3、5、7 等,默认是 3。较大的核大小可以捕捉到更大的变化,但可能导致图像模糊。

返回值

  • 返回与输入图像大小相同的图像,表示图像的 Laplacian 变换结果。输出图像反映了图像的二阶导数信息,边缘部分的像素值较大,而平坦区域的像素值较小。
import cv2img = cv2.imread("shudu.png")img_lap = cv2.Laplacian(img, -1, ksize=3)cv2.imshow("img", img)
cv2.imshow("img_lap", img_lap)
cv2.waitKey(0)

 

Canny 算子函数

功能: Canny 算子是图像处理中经典的边缘检测算法,由 John F. Canny 于1986年提出。它基于多阶段的处理流程,旨在通过检测图像中亮度急剧变化的区域来提取边缘。Canny 算子通常用于:

  • 提取图像中的边缘。
  • 去除噪声并减少误检。
  • 提高图像分析和识别的准确性。

Canny 算子包括以下主要步骤:

  1. 高斯滤波:使用高斯滤波器对图像进行平滑处理,去除噪声。
  2. 梯度计算:计算图像在水平方向(X)和垂直方向(Y)的梯度,通常使用 Sobel 算子。
  3. 非极大值抑制(NMS):在梯度图像中找到边缘,并通过抑制非边缘点来细化边缘。
  4. 双阈值检测:根据设定的低阈值和高阈值对梯度值进行分类,确定边缘的强度。
  5. 边缘连接:使用边缘连接算法,确保边缘被正确地连接起来。

Canny 算子函数:cv2.Canny()

函数原型

cv2.Canny(image, threshold1, threshold2, edges=None, apertureSize=3, L2gradient=False)

参数

  1. image (InputArray):

    • 输入图像,必须是灰度图像。若输入为彩色图像,函数会自动转换为灰度图像。
  2. threshold1 (int):

    • 低阈值。图像中的梯度值低于该值的像素点将被认为不是边缘。用于初步筛选边缘像素。
  3. threshold2 (int):

    • 高阈值。图像中的梯度值高于该值的像素点将被认为是边缘。用于确定强边缘像素。

返回值

  • 返回一个二值图像,表示图像中的边缘。边缘的像素值为 255(白色),非边缘的像素值为 0(黑色)。边缘图像与输入图像具有相同的大小。
import cv2img = cv2.imread("flower.png")img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 灰度化_, img_bin = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)  # 二值化img_blur = cv2.GaussianBlur(img_bin, (3, 3), 3)  # 高斯模糊img_canny = cv2.Canny(img_blur, 30, 70)  # 边缘检测cv2.imshow("img", img)cv2.imshow("img_canny", img_canny)
cv2.waitKey(0)

 

 findContours 函数 和 drawContours 函数

findcontours()

功能cv2.findContours() 函数是 OpenCV 中用于图像轮廓检测的函数,它可以检测图像中的轮廓(即边界或物体的外形)。通过该函数,可以将图像中的物体或结构提取为一系列的轮廓,通常用于图像分析、形状识别、图像分割等任务。

轮廓是指图像中像素的边界,在二值化图像中,通常白色区域的边界就是轮廓。该函数可以帮助识别这些边界,进而提取对象的形状或进行进一步处理。

findContours 函数:cv2.findContours()

函数原型

cv2.findContours(image, mode, method, contours=None, hierarchy=None)

参数

  1. image (InputArray):

    • 输入图像,必须是二值化图像(黑白图像),可以是 uint8 类型。轮廓检测通常在二值图像中进行,通常首先使用阈值化或边缘检测(如 Canny)方法将图像转换为二值图像。
  2. mode (int):

    • 轮廓的检索模式。决定了如何存储轮廓信息。常用的模式有:
      • cv2.RETR_EXTERNAL:仅检索最外层的轮廓,不考虑内嵌的轮廓。
      • cv2.RETR_LIST:检索所有轮廓,并将它们放在列表中(不建立层级关系)。
      • cv2.RETR_TREE:检索所有轮廓,并建立轮廓的层级关系(即父子关系)。
      • cv2.RETR_CCOMP:检索所有轮廓,返回双层结构(外轮廓与内轮廓)。
      • cv2.RETR_FLOODFILL:检索所有轮廓,并支持 Flood Fill(洪水填充)结构。
  3. method (int):

    • 轮廓的近似方法。决定如何近似轮廓的形状。常用方法有:
      • cv2.CHAIN_APPROX_SIMPLE:存储轮廓的端点,减少存储点的数量。适用于大多数应用。
      • cv2.CHAIN_APPROX_NONE:保存轮廓的所有点(无压缩),适用于需要所有点的应用。

返回值

cv2.findContours() 返回一个包含两个或三个元素的元组:

  1. contours
    • 检测到的轮廓列表。每个轮廓是一个由轮廓点构成的数组,表示轮廓的形状。
  2. hierarchy(可选):
    • 轮廓的层级结构信息,表示轮廓之间的嵌套关系。通常是一个 numpy 数组,包含每个轮廓的父子层级、同级关系等。

 drawContours()

功能cv2.drawContours() 函数用于在图像上绘制轮廓。它可以根据提取到的轮廓信息,将轮廓绘制到图像上,通常用于视觉展示或进一步分析。此函数可以绘制一个或多个轮廓,支持自定义颜色、线条厚度、轮廓层级等。

drawContours 函数:cv2.drawContours()

函数原型

cv2.drawContours(image, contours, contourIdx, color, thickness, lineType=cv2.LINE_8, hierarchy=None, maxLevel=0, offset=(0, 0))

参数: 

  • image (InputOutputArray):

    • 输入图像,可以是彩色图像(例如:BGR图像)或灰度图像。该图像会在绘制轮廓的基础上进行修改,因此如果不希望修改原图,建议先复制图像。
  • contours (list):

    • 轮廓的列表,每个轮廓是一个包含多个点的数组。轮廓是由 cv2.findContours() 函数提取的,可以是一个或多个轮廓。每个轮廓是一个包含边界点(如 [[x1, y1], [x2, y2], ...])的 NumPy 数组。
  • contourIdx (int):

    • 需要绘制的轮廓索引。如果为 -1,表示绘制所有的轮廓。如果要绘制特定轮廓,只需指定其索引值(例如 0 表示第一个轮廓,1 表示第二个轮廓等)。
  • color (Scalar):

    • 轮廓的颜色。可以是一个三元组(如 BGRRGB)。例如, (0, 255, 0) 表示绿色(BGR格式),(255, 0, 0) 表示蓝色。颜色值可以是整型或浮点型。
  • thickness (int):

    • 轮廓的线条厚度。正整数表示线条宽度,-1 表示填充轮廓区域。如果是负值,轮廓区域会被填充(例如:-1 表示填充整个轮廓)

返回值

  • 此函数没有返回值,它直接修改传入的图像(即在图像上绘制轮廓)。因此,绘制轮廓后,通常会显示或保存修改后的图像。
import cv2img = cv2.imread('../12.13/outline.png')gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #灰度化
ret,img_binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) #二值化contour,hierarchy = cv2.findContours(img_binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) #轮廓检测img_copy=img.copy() #复制图像
img_draw =cv2.drawContours(img_copy,contour,-1,(0,0,255),3) #绘制轮廓cv2.imshow('img_draw',img_draw)
cv2.imshow('img',img)
cv2.waitKey(0)

 

透视变换函数:cv2.getPerspectiveTransform()cv2.warpPerspective() 

在计算机视觉中,透视变换(Perspective Transformation)用于将图像从一个视角变换到另一个视角。它广泛应用于图像矫正、图像配准、图像拼接等任务。

OpenCV 提供了两个主要函数用于透视变换:

  1. cv2.getPerspectiveTransform():计算透视变换矩阵。
  2. cv2.warpPerspective():应用透视变换矩阵对图像进行变换。

1. cv2.getPerspectiveTransform() 函数

功能

cv2.getPerspectiveTransform() 函数用于计算透视变换矩阵,该矩阵可以将图像中的四个点映射到目标图像中的四个点。它通过原图中的四个点和目标图中的四个点来计算变换矩阵。

函数原型

cv2.getPerspectiveTransform(src, dst)

参数

  • src (numpy.ndarray):
    • 原始图像中的四个点坐标,通常是一个形状为 (4, 2) 的数组,表示图像中四个点的坐标。格式为 [x1, y1], [x2, y2], [x3, y3], [x4, y4],通常是一个矩形或四边形的四个顶点。
  • dst (numpy.ndarray):
    • 目标图像中的四个点坐标,表示变换后图像中四个点的坐标。同样是一个形状为 (4, 2) 的数组。

返回值

  • M (numpy.ndarray):
    • 透视变换矩阵,是一个 3x3 的矩阵,用于将原始图像的四个点映射到目标图像的四个点。

应用

  • cv2.getPerspectiveTransform() 用于计算从一个视角到另一个视角的透视变换矩阵。常用于图像矫正、变换、拼接等任务。

2. cv2.warpPerspective() 函数

功能

cv2.warpPerspective() 函数使用 cv2.getPerspectiveTransform() 计算出的透视变换矩阵来实际执行图像的透视变换。它将图像的像素根据透视矩阵进行重新映射,得到变换后的图像。

函数原型

cv2.warpPerspective(src, M, dsize)

参数

  • src (numpy.ndarray):

    • 输入图像,即要进行透视变换的原始图像。
  • M (numpy.ndarray):

    • 透视变换矩阵,通常通过 cv2.getPerspectiveTransform() 计算得到。
  • dsize (tuple):

    • 输出图像的大小,指定变换后图像的宽和高。通常是 (width, height)

返回值

  • dst (numpy.ndarray):
    • 变换后的图像。输出图像的尺寸由 dsize 参数指定,并且图像的内容会根据透视变换矩阵进行重新映射。

应用

  • cv2.warpPerspective() 用于对图像应用透视变换,常见的应用包括图像的视角变换、平面图形的变换(如棋盘格角度调整)、透视校正等

 

import cv2
import numpy as npimg = cv2.imread('./youhua.png')
points1 = np.float32([[175,142],[621,35],[89,491],[652,546]])points2 = np.float32([[min(points1[:,0]),min(points1[:,1])],[max(points1[:,0]),min(points1[:,1])],[min(points1[:,0]),max(points1[:,1])],[max(points1[:,0]),max(points1[:,1])]])
M = cv2.getPerspectiveTransform(points1,points2)img_output = cv2.warpPerspective(img,M,(img.shape[1],img.shape[0]))cv2.imshow('img',img)
cv2.imshow('img_output',img_output)
cv2.waitKey(0)

相关文章:

Python中opencv的一些函数及应用

Sobel 算子函数 功能: Sobel 算子用于计算图像的梯度(变化率),常用于边缘检测。它通过对图像应用一个基于一阶导数的滤波器来强调图像中的边缘部分,特别是水平和垂直方向上的边缘。通过计算图像的梯度,可以…...

泷羽sec学习打卡-brupsuite8伪造IP和爬虫审计

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-Brup-FaskIP 伪造IP配置环境brupsuite导入配置1、扩展中先配置python环境2、安…...

麒麟信安推出支持信创PC的新一代云桌面方案,助力政务信创高效安全运维

12月11日,在第二届国家新一代自主安全计算系统产业集群融通生态大会上,麒麟信安发布了支持信创PC的新一代云桌面方案,该方案是基于国际TCI架构实现国产PC机云化纳管在国内的首次发布,并与银河麒麟桌面操作系统、长城国产PC整机实现…...

【我的开源】ESCurlGen 一款 ElasticSearch curl 命令生成器

由于经常编写复杂的 Elasticsearch 查询,并通过代码生成查询条件,我发现每次使用 curl 请求 Elasticsearch 时,手动复制配置信息并构建 curl 命令的过程非常繁琐,尤其是在管理多个环境的情况下更为不便。因此,我利用 A…...

基于ESP32的桌面小屏幕实战[4]:硬件设计之PCB Layout

1. PCB Layout 步骤 生成PCB 确定PCB layout规范 绘制板框尺寸 布局 布局规范: 按电气性能合理分区,一般分为:数字电路区(即怕干扰、又产生干扰)、模拟电路区(怕干扰)、功率驱动区(干扰源)&a…...

(css)element中el-select下拉框整体样式修改

(css)element中el-select下拉框整体样式修改 重点代码(颜色可行修改) // 修改input默认值颜色 兼容其它主流浏览器 /deep/ input::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.50); } /deep/ input::-moz-input-placeholder {color: rgba…...

金融分析-Transformer模型(基础理论)

Transformer模型 1.基本原理 transformer的core是注意力机制,其本质就是编码器-解码器。他可以通过多个编码器进行编码,再把编码完的结果输出给解码器进行解码,然后得到最终的output。 1.1编码器 数据在编码器中会经过一个self-attention的…...

Parcel 常用插件:增强功能与性能的最佳选择

前言 Parcel 是一个现代化的零配置应用打包工具,旨在简化开发流程并提高效率。通过其智能的默认配置和丰富的插件生态系统,Parcel 使得开发者能够轻松应对各种构建需求。虽然 Parcel 在大多数情况下可以开箱即用,但为了满足特定的项目需求&a…...

Vite 与 Webpack 的区别

在前端开发中,构建工具是不可或缺的,Webpack 和 Vite 是当前最流行的选择之一。尽管它们的目标相似,但在实现方式和开发体验上却有显著差异。本文将探讨 Vite 和 Webpack 的主要区别,以便于根据项目需求选择合适的工具。 1. 构建…...

服务器ubuntu重装系统后将原来的用户进行关联

服务器ubuntu重装系统后将原来的用户数据进行关联 关联用户到已存在目录 sudo useradd user_name -m -s /bin/bash -d /home***/name添加sudo权限 vim /etc/sudoers# 文件末尾添加 user_name ALL(ALL:ALL) ALL更改拥有者 sudo chown -R user_name:user_name /home***/na…...

Python模块导入:import与from...import的深度解析

Python模块导入:import与from…import的深度解析 在Python编程中,模块的导入是组织和复用代码的关键环节。Python提供了import和from...import两种常见的模块导入方式,它们在使用方式、命名空间管理、可读性、内存使用等方面各有特点&#x…...

ROS2-humble中指定OpenCV版本进行开发

本地是Ubuntu22.04系统,安装了ROS2-humble,看了下humble自带的OpenCV版本4.5.4,由于DNN模块读取.onnx格式的模型要用OpenCV4.7及以上的版本,于是编译了4.10.0的OpenCV,但开发ROS2节点时,虽然CMake中已经指定…...

如何在 Ubuntu 22.04 上使用 vnStat 监控网络流量

简介 vnStat是一个免费的、开源的、基于控制台的Linux操作系统网络流量监控工具。通过vnStat,你可以在不同的时间段监控网络统计数据。它简单、轻量级,并且消耗的系统资源很小。vnStat允许你按小时、日、月、周和日生成网络流量数据。本教程将向你展示如…...

为什么要使用数据仓库?

现状和需求 大量的企业经营性数据(订单,库存,原料,付款等)在企业的业务运营系统以及其后台的(事务型)数据库中产生的。 企业的决策者需要及时地对这些数据进行归类分析,从中获得企业运营的各种业务特征&a…...

《宇宙机器人》提示错误弹窗“找不到d3dx9_43.dll”是什么原因?“d3dx9_43.dll缺失”怎么解决?

电脑游戏运行时常见问题解析:《宇宙机器人》提示“找不到d3dx9_43.dll”的解决之道 TGA2024落幕,年度最佳游戏——《宇宙机器人》,作为一名在软件开发领域深耕多年的从业者,我深知电脑游戏在运行过程中可能会遇到的各种挑战&…...

DAC数据手册中专有名词TERMINOLOGY 讲解

DAC数据手册中TERMINOLOGY专有名词 讲解 Relative Accuracy or Integral Nonlinearity (INL):相对精度 或 积分非线性LSB(Least Significant Bit):最小有效位 Differential Nonlinearity (DNL):差分非线性单调性DNL很重…...

Java中基于TCP的Socket编程

一、概述 Socket(套接字)是网络通信的一种机制,允许不同主机之间的进程进行通信。在Java中,Socket支持TCP(传输控制协议)和UDP(用户数据报协议)。 1、TCP协议介绍 TCP协议在通信之…...

详解二叉树

一、树的概念和结构 树是⼀种非线性的数据结构,它是由 n(n>0) 个有限结点组成⼀个具有层次关系的集合。把它叫做 树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。 • 有⼀个特殊的结点&#xff0…...

Kafka Connect

根据您提供的错误信息和日志分析,这里是一些针对 Kafka Connect、协调者不可用、网络客户端连接问题、消费者组偏移量提交失败以及消费者组协调者发现问题的具体解决建议: 检查 Kafka 集群状态: 使用 kafka-broker-api-versions.sh 检查每个 …...

Mac charles报错 invalid keystore format

1.问题说明 打开charles会有一个 invalid keystore format的提示,更隐藏的影响,是安卓设备安装了凭证,但是charles仍然抓不到包,会展示unknow,即使是charles配置好了ssl proxy setting,并且mac信任了char…...

Leetcode 409. Longest Palindrome

Problem Given a string s which consists of lowercase or uppercase letters, return the length of the longest palindrome that can be built with those letters. Letters are case sensitive, for example, “Aa” is not considered a palindrome. Algorithm Count …...

事件代理详解

一、基本概念 事件代理(Event Delegation),也称为事件委托,是一种在 JavaScript 中处理事件的技术。它基于 DOM(文档对象模型)事件流的原理,利用事件冒泡机制,将一个元素&#xff0…...

代码随想录算法训练营第三天 | 链表理论基础 | 203.移除链表元素

感觉上是可以轻松完成的,因为对链接的结构,元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了,用malloc折腾半天,忘记了用new,真想扇自己嘴巴子到飞起删除后写一个函数,把链表打印…...

专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。

考研落幕,本人本中游211,如愿以偿考入浙江大学,专业课842信号系统与数字电路140,总分410,和考前多次模考预期差距不大(建议大家平时做好定期模考测试,直接从实战分数中,找到复习的脉…...

Python-pptx库简介

目录 一、Python-pptx 库概述 二、安装 Python-pptx 库 三、创建演示文稿 四、添加文本内容 五、添加形状 六、添加图片 七、添加图表 八、保存演示文稿 九、示例演示文稿 十、总结 在Python编程中,处理演示文稿是一项常见的任务。Python-pptx库为我们提供…...

电子应用设计方案-52:智能电子相框系统方案设计

智能电子相框系统方案设计 一、引言 智能电子相框作为一种能够展示数字照片和多媒体内容的设备,为用户提供了便捷、个性化的照片展示方式。本方案旨在设计一款功能丰富、用户体验良好的智能电子相框系统。 二、系统概述 1. 系统目标 - 高质量显示照片和视频&#…...

mac 安装CosyVoice (cpu版本)

CosyVoice 介绍 CosyVoice 是阿里研发的一个tts大模型 官方项目地址:https://github.com/FunAudioLLM/CosyVoice.git 下载项目(非官方) git clone --recursive https://github.com/v3ucn/CosyVoice_for_MacOs.git 进入项目 cd CosyVoic…...

mysql命令行界面(黑框)的登录

文章目录 开启关闭服务报错登录mysql退出mysql数据据database在电脑中的存放位置删除数据库语句 drop注意 cmd用管理员打开 开启关闭服务 报错 我有这个报错,但是使用没什么影响 登录mysql root替换成自己的用户名 退出mysql exit 数据据database在电脑中的…...

Git 快速入门

Git 是什么? Git 是一个分布式版本控制系统四大区域: 工作区:项目文件的当前状态,即本地目录。暂存区:保存将要提交的文件快照,是一个中间层,使用git add将文件添加到暂存区。本地仓库&#xf…...

优先队列及其应用

优先队列 优先队列是一种特殊的队列数据结构,它的特点是每个元素都有一个优先级,出队操作按照优先级而不是入队顺序来决定。 当优先队列为从大到小排列时,队列元素的头部始终保持数值最大,并且可以通过队尾插入数据,…...

Python:基于PyCharm的简单程序创建及运行-HelloWorld

1. 新建项目 2. 设置文件位置,并创建项目 文件位置由“目录项目名称”组成,如:D:\PycharmProjects\HelloWorld,“HelloWorld”则是项目名称。 3. 创建Python文件 4. 定义文件名称,如HelloWorld。双击【Python 文件】完…...

MySQL笔记--多表查询

1--多表关系 多表关系基本上分为三种: 一对多(多对一); 多对多; 一对一; 1-1--多对一 在多的一方建立外键,指向一的一方的主键; 1-2--多对多 建立第三张中间表,中间表至少…...

CentOS Stream Linux操作系统最新版本安装部署

https://www.centos.org/ 如上所示,从CentOS Stream Linux操作系统官方网站下载最新版本的操作系统安装源文件。 如上所示,在VMware中设置CentOS Stream Linux操作系统的安装属性,包括设置运行内存容量、处理器核数、硬盘容量、网络连接模式…...

D95【python 接口自动化学习】- pytest进阶之fixture用法

day95 pytest的fixture详解(二) 学习日期:20241210 学习目标:pytest基础用法 -- pytest的fixture详解(二) 学习笔记: fixture(autouseTrue) func的autouse是TRUE时,所有函数方法…...

自动化立体仓库堆垛机SRM控制系统运行控制功能块开发设计

1、堆垛机SRM控制系统硬件组态如下图 G120变频器,通信报文111 2、堆垛机SRM控制系统HMI屏幕页面如下图 运行、起升、货叉相关参数设定 3、堆垛机SRM控制系统中相关变量定义如下图 行走报警 行走条码位置反馈 行走条码速度反馈 行走正极限 行走负极限 4、运行控制功能块代码…...

测试工程师的职业规划

测试人员在管理上的发展 基层测试管理者:测试组长 工作内容:安排小组工作,提升小组成员测试能力,负责重要的测试工作。 负责对象:版本,项目 中层测试管理者:测试经理 负责对象&#xff1…...

CSS:html中,.png的动态图,怎么只让它显示部分,比如只显示右上部分的,或右边中间部分

目录 背景 方法 1: 使用 background-image 和 background-position 示例代码 解释 方法 2: 使用 clip-path 裁剪图像 示例代码 解释 方法 3: 使用 object-fit 和 overflow 示例代码 解释 示例 总结 背景 在HTML中,如果你有一个 .png 的动态图(例如一个 GIF 动画或…...

Python音频处理:如何将立体声转换为单声道并调整采样率

Python音频处理:如何将立体声转换为单声道并调整采样率 问题背景解决方案1. 首先导入需要的库2. 将立体声转换为单声道3. 调整采样率4. 处理音频块 代码解释注意事项小贴士总结 大家好!今天我们来学习一个简单但实用的音频处理小技巧 - 如何使用Python将…...

go语言并发读写数据队列,不停写的同时,一次最多读取指定量数据(逐行注释)

1、数据队列可以存储任意类型的一个数据(下程序是添加整数值)。 数据队列代码点这里查看《go语言结构体实现数据结构队列(先进先出)存储数据(逐行注释)》 2、读写操作并发进行(下程序向队列中…...

2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)

模块化概述 什么是模块?模块是一个封装了特定功能的代码块,可以独立开发、测试和维护。模块通过导出(export)和导入(import)与其他模块通信,保持内部细节的封装。 前端 JavaScript 模块化是指…...

【深度学习】服务器常见命令

1、虚拟环境的安装位置 先进入虚拟环境 which python2、升序查看文件内容 ls -ltr3、查看服务器主机空间使用情况 df -hdf -h .4、查看本地空间使用情况 du -sh ./*du -sh * | sort -nr5、查找并删除进程 # 查找 ps aux# 删除 kill -KILL pid6、查看服务器配置 lscpuuna…...

C++小白实习日记——Pollnet,Efvi,UDP,数据类型转换(下)

内容太多了,这篇记录UDP接收端 一,UDP接收端接收数据 有了pollnet这个开源项目的支持,接收端的步骤为:1)初始化硬编码的参数:接口,IP和端口 2)创建接收文件.csv 3)读…...

pytorch bilstm crf的教程,注意 这里不支持批处理,要支持批处理 用torchcrf这个。

### Bi-LSTM Conditional Random Field ### pytorch tutorials https://pytorch.org/tutorials/beginner/nlp/advanced_tutorial.html ### 模型主要结构: ![title](sources/bilstm.png) pytorch bilstm crf的教程,注意 这里不支持批处理 Python version…...

C# OpenCV机器视觉:畸变矫正

在一个阳光明媚的早晨,阿强决定去拍照。他拿起相机,穿上他最喜欢的羊毛大衣,准备记录下生活中的美好瞬间。可是,当他兴奋地查看照片时,发现自己拍的每一张都像是被外星人用变形金刚的力量扭曲过一样!“这是…...

Java 密封类 (Sealed Classes) 深度解析

文章目录 语法说明定义密封类定义子类 使用场景探讨实际应用示例与其他语言特性的结合使用 Java 作为一种面向对象编程语言,提供了继承机制来实现代码复用和扩展。然而,无限制的继承可能导致代码库变得难以维护,甚至引入安全隐患。为了应对这…...

conda和pip源

conda 地址 ~/.condarc中科大源 channels:- conda-forge- https://mirrors.ustc.edu.cn/anaconda/pkgs/main/- https://mirrors.ustc.edu.cn/anaconda/pkgs/r/- https://mirrors.ustc.edu.cn/anaconda/pkgs/msys2/- defaults show_channel_urls: true查看 conda config --s…...

【c++数学】解一元一次方程

注意&#xff1a;没有合并多项式的功能&#xff0c;且未知数必须只在左边&#xff0c;右边是常数&#xff01;&#xff01;&#xff01; 好用记得点赞&#xff01; 代码如下&#xff1a; #include<iostream> #include<stdio.h>using namespace std;string q,f;d…...

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法 1 搭建测试对象1.1 禅道下载1.2 禅道安装1.3 运行禅道1.4 接口查看1.5 接口选择 2 Jmeter前置操作2.1 创建Jmeter线程组2.2 创建信息头管理器和请求默认值2.3 添加获取token接口2.4 添加监听器 …...

采用qL-MPC技术进行小型固定翼无人机的路径跟随控制

来自论文"Predictive Path-Following Control for Fixed-Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances" 控制架构 采用的是 ULTRA-Extra无人机&#xff0c;相关参数如下&#xff1a; 这里用于guidance law的无人机运动学模型为&#…...

比特币是否会取代美元(以及其他主权货币)

上图是 Olivier Blanchard 宏观经济学第八版的英文版内容。这里用中文解释。 1. 背景与现状&#xff1a; 比特币的规模与美元相比仍然很小&#xff1a; 截至 2018 年 12 月&#xff0c;比特币的总流通量为 1730 万枚&#xff0c;每枚价值 $3,900&#xff0c;总市值约 $670 亿…...