Halcon 和 OpenCV区别

Halcon 和 OpenCV 都是计算机视觉领域的重要工具,但它们的设计理念、功能侧重和适用场景有显著不同。下面这个表格汇总了它们的核心区别,方便你快速了解:

  • 开发模式与体验​​:Halcon 配备了强大的​​图形化交互开发环境 HDevelop​​。你可以通过可视化方式快速调试算法、验证思路,极大提升了开发效率,尤其适合算法原型设计。OpenCV 则更传统,需要你​​编写代码​​来实现所有功能,灵活性更高,但开发验证流程相对繁琐。
  • 性能与优化​​:Halcon 的算法针对工业应用进行了​​深度优化​​,尤其在处理高分辨率图像、复杂匹配和3D视觉任务时,其​​速度和精度优势明显​​。OpenCV 作为通用库,其性能在很大程度上依赖于用户的编程技巧和对算法的理解,你可能需要花费额外精力进行优化和硬件加速(如利用CUDA)才能满足特定性能要求。
  • 生态与社区​​:OpenCV 拥有​​极其活跃的全球开源社区​​,这意味着你可以轻松找到海量的教程、代码示例和论坛讨论,遇到问题时更容易获得帮助。Halcon 作为商业软件,社区规模较小,但其​​官方提供的技术支持、技术文档和培训服务​​非常专业和可靠
  • 选择 Halcon 的情况​​:

    • 项目要求高​​精度​​、高​​速度​​和高​​可靠性​​,例如工业生产线上的自动化质检、精密尺寸测量、机器人视觉引导等。
    • 项目​​预算充足​​,且愿意为成熟的官方技术支持、稳定的性能和完善的工具体系付费。
    • 团队更倾向于​​快速开发​​和部署复杂的机器视觉应用。
  • 选择 OpenCV 的情况​​:
    • 项目​​预算有限​​或需要开源方案。
    • 应用于​​学术研究​​、​​算法学习​​或需要高度​​自定义修改​​算法。
    • 开发场景​​多样化​​,涉及移动端(Android/iOS)、嵌入式设备(如树莓派)或Web端等。
    • 团队有较强的​​编程能力​​,愿意投入时间进行算法优化和调试。

VisionPro 和 Visual Master区别

VisionPro​​:工业视觉的“精密仪器”,适合​​技术深厚+高预算​​团队,长期维护成本低但学习门槛高。
​​VisionMaster​​:国产化“敏捷工具”,​​降低工程师技能要求​​,适合快速响应项目,但复杂任务需结合OpenCV等二次开发

VisionPro是Cognex公司开发的机器视觉软件,而VisionMaster是海康机器人开发的国产机器视觉软件

熟悉VisionPro的基本概念和界面操作,接着学习使用各种视觉工具如Blob分析、边缘检测等,最后进阶到编程和系统集成。VisionPro需要学习C#或C++等编程语言以进行API交互
VisionMaster,提到它采用图形化流程图开发方式,学习曲线较平缓。用户需要掌握其界面操作、工具链使用(如测量、定位、识别等),以及如何快速部署视觉应用。虽然也支持脚本扩展,但编程要求低于VisionPro。

VisionPro功能强大,适合高精度工业场景,但学习曲线陡峭且成本高;VisionMaster则易于上手,适合快速部署中等复杂度任务,成本较低。在性能上,VisionPro处理复杂任务效率更高,支持3D视觉和高速检测;VisionMaster在常规任务中表现良好但处理能力有限。

VisionPro需要深入理解多视图几何、相机模型等理论,而VisionMaster更侧重应用层面的流程设计。

Halcon的官方文档是学习Halcon的最佳资源之一。

HALCON - the powerful Machine Vision Software: MVTec Software

文档中详细介绍了Halcon的各种功能和用法,包括图像处理、形态学计算分析、校正、分类辨识、形状搜寻等基本的几何以及影像计算功能。

 1.halcon学习路线

​Halcon算法基础​​ -> ​​C#语言与UI开发​​ -> ​​软硬件联合编程​​ -> ​​最终项目方案设计​

halcon安装

安装教程网上太多了,这里附上链接

安装链接:Halcon2024版安装教程附带license(2025.04)更新_halcon license-CSDN博客

license下载地址:license的github地址

参考:Halcon学习路线-CSDN博客

技术主题具体知识点
halconhdevelop使用、通用流程、数据类型和异常处理、采集图像
图像与ROI、图像预处理
blob(流程、分割方法、灰度直方图工具、特征直方图工具、blob实例)
几何定位(匹配助手、几何定位实例)
仿射变换(仿射变换理论、实例)
测量(卡尺工具的过程、一维助手、找圆和找直线工具)
案例分析blob、定位、测量、仿射变换、一维码、二维码、OCR
C#常量与变量、表达式与运算符、字符与字符串、流程控制语句
数组、属性和方法、结构与类、异常处理、程序调试
Form窗体、常用控件、定时器、获取时间、文件夹操作(获取exe路径、创建新文件夹等)
写CSV文件、线程
联合编程环境配置、数据类型、halcon程序导出成ot程序、联合编程示例之Blob
联合编程示例之相机采图(外触发和软触发)、轮廓匹配、测量、配置文件读写
硬件硬件及打光实践
九点标定串口、网口、机械手和相机九点标定
外触发及方案设计外触发关键技术、如何根据客户需求进行方案设计

📖 一、Halcon 学习路线 

​第一阶段:Halcon 基础与核心算法 (路线图中的“Halcon”部分)​

这是整个学习的基石,目标是熟练掌握HDevelop并理解机器视觉的核心处理流程。学习内容​​:安装配置(Windows/Linux)、HDevelop界面操作、图像采集与显示、基础算子(滤波、边缘检测)。​​资源​​:《Halcon入门教程v1.9》、官方示例库。​模板匹配(形状/特征匹配)、测量工具(亚像素级精度)、OCR/条码识别、Blob分析。资源​​:Halcon范例教程(CSDN文库)。​

  1. ​开发环境与基础:

    • 熟悉 ​​HDevelop​​ 的界面、脚本编辑、变量管理、程序调试。
      重点掌握:
      * 图像采集(read_image, grab_image)  
      * 区域处理(threshold, connection, select_shape)  
      * 模板匹配(create_shape_model, find_shape_model)  
      * 测量(measure_pos, measure_pairs)  
    • 掌握Halcon的​​通用流程​​:图像采集 -> 图像预处理 -> 区域/特征提取 -> 结果判断与输出。
      用Halcon实现经典算法:
      Canny边缘检测(edges_image)
      形态学开闭运算(opening_circle, closing_rectangle1)
      仿射变换(hom_mat2d_rotate, affine_trans_image)
    • 理解Halcon特有的​​数据类型​​:HImage(图像),HRegion(区域),HXLD(轮廓)等,以及它们之间的转换。学
  2. ​图像处理与分析:​

    • ​图像预处理​​:学习各种滤波(均值、中值、高斯)、图像增强等,为后续分析准备高质量的图像。
    • ​Blob分析(区域分析)​​:这是最核心的技术之一。
      * 频域分析(fft_image+滤波)  
      * Blob分析(select_shape筛选缺陷区域)  
      * 分类器(MLP或SVM区分真假缺陷)  
      关键技巧:使用gen_contour_region_xld提取亚像素轮廓提升精度
      • ​流程​​:图像分割(阈值分割、动态阈值等) -> 区域处理(形态学、连接、选择) -> 特征提取(面积、中心、圆度等) -> 特征选择。
      • 熟练使用 ​​灰度直方图工具​​ 和 ​​特征直方图工具​​ 来辅助分析和选择区域。
  3. ​几何定位(Pattern Matching):​

    • 学习使用 ​​匹配助手(Matching Assistant)​​。这是Halcon的王牌功能,用于在图像中精确找到目标物体。
    • 掌握基于形状的匹配(Shape-Based Matching)的原理和参数调节(金字塔级别、角度范围、对比度等)。
    • 通过实例学习如何解决遮挡、脏污、亮度变化等实际问题。
  4. ​测量与拟合:​

    • ​仿射变换​​:理解其原理(平移、旋转、缩放),学会将像素坐标转换到世界坐标(机器人坐标),这是​​九点标定​​的理论基础。
    • ​测量技术​​:
      • 掌握 ​​卡尺工具(Caliper)​​ 的工作过程,用于边缘精准定位。
      • 学习使用 ​​一维测量助手(1D Measuring Assistant)​​。
      • 实践​​找圆​​和​​找直线​​的工具。
  5. ​综合案例与识别:​

    • 将前面所学融会贯通,完成Blob、定位、测量、仿射变换的综合案例。
    • 学习​​一维码​​、​​二维码​​的识别。
    • 了解​​OCR(光学字符识别)​​ 的基本流程。
      3D定位
      双目相机标定(calibrate_cameras)
      点云处理(xyz_to_object_model_3d)
      3D匹配(find_surface_model)高速OCR
      字符分割(partition_dynamic)
      深度学习OCR(read_ocr_class_mlp)
      实时性(通过ROI减少处理区域)

​第二阶段:编程语言与联合开发 (路线图中的“C#”和“联合编程”部分)​

工业应用通常需要强大的上层界面,C#(或C++)是首选。学习内容​​:
3D视觉:点云处理(配准、分割)、3D匹配(基于CAD模型)。
深度学习:目标检测(YOLO集成)、缺陷分类(需准备.hdict数据集)。
脚本编程:Halcon脚本语法、C++/Python API集成。

  1. ​C# 编程基础:​

    • 掌握变量、流程控制、数组、字符串、类与对象等核心语法。
    • 重点学习​​窗体(Form)开发​​、常用控件(按钮、图片框、列表框等)、​​定时器​​、​​文件操作​​和​​多线程​​。这些是开发视觉软件界面的基础。
  2. ​Halcon 与 C# 联合编程:​

    • ​环境配置​​:在Visual Studio中配置Halcon的.NET开发环境,添加引用。
    • ​数据交互​​:学会在C#中调用Halcon算子,并正确处理Halcon的数据类型(如将HImage转换为C#图片控件可显示的格式)。
    • ​程序导出​​:将HDevelop中调试好的程序​​导出为C#代码(.cs文件)或导出为.NET程序集(.hdpl文件)​​,然后在C#项目中调用。这是提升开发效率的关键!
    • ​实战演练​​:在C#中实现相机采图(软触发、外触发)、轮廓匹配、测量、参数保存(配置文件读写)等功能。
​第三阶段:硬件集成与项目实战 (路线图中的“硬件”、“九点标定”、“外触发”)​

这是从“会编程”到“能做项目”的关键飞跃。

  1. ​视觉硬件选型与打光:​

    • 了解相机(面阵、线阵)、镜头(焦距、景深)、光源(环形光、条形光、背光、同轴光)的选型原则。
    • ​“打光实践”至关重要​​!好的打光能让算法事半功倍。多动手,尝试不同的打光方式来解决实际问题。
  2. ​九点标定(手眼标定):​

    • 这是机器人视觉引导的核心技术。
    • 理解标定原理:建立​​图像像素坐标系​​与​​机器人坐标系​​之间的映射关系。
    • 学习通过​​串口​​或​​网口​​与机械手通信,完成九点标定的完整流程。
  3. ​外触发与方案设计:​

    • 学习​​外触发​​技术,使相机拍照与生产线运动同步,确保图像采集的准确性。
    • ​方案设计​​:学习如何分析客户需求,将需求拆解为技术指标(精度、节拍),并据此选择相机、镜头、光源、算法流程,最终形成可行的技术方案。
第四阶段:工业强化

  1. 硬件集成

    • 学习与PLC通信(如通过TCP/IP发送检测结果)
    • 相机SDK二次开发(如Basler的Pylon API)
  2. 性能优化 

    • Halcon算子级优化:
      • 使用tuple替代循环
      • 预编译模型(write_shape_model加速加载)
    • 多线程处理(par_start并行化)
  3. 行业专项突破 

    • 半导体:晶圆缺陷检测(暗场照明+高分辨率相机)
    • 汽车:零件尺寸测量(微米级精度要求)
    • 食品:包装完整性检测(多光谱成像)

💡 二、学习建议与资源

  1. ​学习顺序​​:严格按照路线图的顺序进行,​​不要跳级​​。先精通Halcon本身,再学C#,最后搞联合编程和硬件。地基不牢,地动山摇。
  2. ​核心方法​​:​​多动手!多动手!多动手!​​ 光看文档和视频是学不会的。对于每个知识点,都要在HDevelop里亲自写代码、调参数、看效果。
  3. ​最佳资料​​:
    • ​Halcon自带的帮助文档和示例程序​​:这是最权威、最好的学习资料,按F1查看算子说明,里面的示例代码极其宝贵。 HALCON 产品文件和手册: MVTec Software
    • ​书籍​​:《机器视觉算法与应用(双语版)》、《Halcon机器视觉算法原理与编程实战》。
    • ​社区​​:CSDN(Halcon 快速入门教程_halcon教程-CSDN博客)、博客园(halcon进化日记-方法论:阶段1:基础攻坚(1~2个月) - 黛色星霜 - 博客园)、知乎上有大量经验分享和问题解答。

2.OpenCV学习路线

  • OpenCV开发基础
    掌握图象与视频读写,基础函数知识,HighGUI与Core模块像素操作,图形操作,图象统计信息与直方图相关应用。

  • 图象卷积
    理解图象卷积概念与相关函数知识,掌握常见的模糊、锐化、增强、去噪、梯度等卷积操作

  • 二值图象分析
    掌握图象二值化各种方法与技巧,学会CCL,轮廓发现,对象测量,轮廓分析,直线与圆检测等二值分析方法,掌握图象形态学应用操作技巧

  • 视频分析
    掌握图象色彩空间转化技巧,视频背景提取、角点特征与光流分析法、理解颜色对象跟踪、光流跟踪、均值迁移跟踪等算法原理与代码演示

  • 特征提取
    掌握图象特征提取的基本方法与相关函数知识,理解ORB特征描述子、SIFT特征描述子提取原理,图象透视变换与特征匹配基本原理与应用演示

  • 深度神经网络
    掌握OpenCV DNN模块基于深度神经网络的对象检测模型的推理调用与输出解析,包括SSD、YOLOv5、YOLOv8、对象检测模型的使用与加速技巧。

  • 经典案例实战
    星云测量与编码、工业刀片缺陷检测、自定义对象检测、二维码定位检测 图像分割与色彩提取、文档处理与对齐、图象对齐与拼接、条码标签有无检测与定位

​​
​​第1周:计算机视觉与OpenCV基础​​

1.1 计算机视觉是OpenCV的核心应用领域,计算机视觉应用场景概述(工业检测、自动驾驶、医疗成像等),因此需要一定的计算机视觉基础。以下几门课程是必不可少的:

图像处理:了解图像的基本操作,如裁剪、旋转、缩放等。

特征提取:学习如何从图像中提取有用的特征,如边缘检测、角点检测等。

深度学习基础:了解神经网络的基本概念,特别是卷积神经网络(CNN)。

1.2  OpenCV 发展历程、跨平台特性(Windows/Linux/macOS)
安装配置:Python 版 pip install opencv-python / C++ 环境配置
核心数据结构:cv::Mat 矩阵操作、图像内存管理

1.3 安装OpenCV:根据自己的操作系统,选择合适的安装方法。可以使用pip安装:

pip install opencv-python// 测试安装:运行以下代码,确保OpenCV安装成功:
import cv2
print(cv2.__version__)

参考:OpenCV: OpenCV-Python Tutorials


​​第2周:OpenCV 图像操作(参考:OpenCV学习路线:从入门到精通-CSDN博客)

2.1 图像读取与显示
  • 读取图像:使用cv2.imread()读取图像。

  • 显示图像:使用cv2.imshow()显示图像。

  • 保存图像:使用cv2.imwrite()保存图像。

    import cv2# 读取图像
    image = cv2.imread('example.jpg')# 显示图像
    cv2.imshow('Image', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()# 保存图像
    cv2.imwrite('output.jpg', image)
    2.2 视频处理
  • 读取视频:使用cv2.VideoCapture()读取视频。

  • 显示视频:使用cv2.imshow()显示视频帧。

  • 保存视频:使用cv2.VideoWriter()保存视频。

import cv2# 读取视频
cap = cv2.VideoCapture('example.mp4')# 保存视频
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))while cap.isOpened():ret, frame = cap.read()if not ret:break# 显示视频帧cv2.imshow('Frame', frame)# 保存视频帧out.write(frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
out.release()
cv2.destroyAllWindows()
2.3 图像基本操作 几何变换:缩放(resize)、旋转(warpAffine)、仿射变换(getAffineTransform)
  • 裁剪图像:使用数组切片操作。

  • 旋转图像:使用cv2.getRotationMatrix2D()cv2.warpAffine()

  • 缩放图像:使用cv2.resize()

  • 
    import cv2# 读取图像
    image = cv2.imread('example.jpg')# 裁剪图像
    cropped_image = image[100:300, 200:400]# 旋转图像
    center = (image.shape[1] // 2, image.shape[0] // 2)
    angle = 45
    scale = 1.0
    M = cv2.getRotationMatrix2D(center, angle, scale)
    rotated_image = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))# 缩放图像
    resized_image = cv2.resize(image, (300, 300))# 显示图像
    cv2.imshow('Cropped Image', cropped_image)
    cv2.imshow('Rotated Image', rotated_image)
    cv2.imshow('Resized Image', resized_image)
    cv2.waitKey(0)

    2.4 边缘检测
  • Canny边缘检测:使用cv2.Canny()进行边缘检测。

    
    import cv2# 读取图像
    image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)# Canny边缘检测
    edges = cv2.Canny(image, 100, 200)# 显示边缘检测结果
    cv2.imshow('Edges', edges)
    cv2.waitKey(0) 
    2.5 特征提取
  • 角点检测:使用cv2.goodFeaturesToTrack()进行角点检测。

  • SIFT和SURF:使用cv2.SIFT_create()cv2.xfeatures2d.SURF_create()进行特征提取。

import cv2# 读取图像
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)# 角点检测
corners = cv2.goodFeaturesToTrack(image, 25, 0.01, 10)
corners = np.int0(corners)for i in corners:x, y = i.ravel()cv2.circle(image, (x, y), 3, 255, -1)# 显示角点检测结果
cv2.imshow('Corners', image)
cv2.waitKey(0)
cv2.destroyAllWindows()# SIFT特征提取
sift = cv2.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(image, None)# 显示SIFT特征提取结果
image_with_keypoints = cv2.drawKeypoints(image, keypoints, None)
cv2.imshow('SIFT Keypoints', image_with_keypoints)
cv2.waitKey(0)
cv2.destroyAllWindows()

像素级操作:BGR/RGB 色彩空间转换、ROI 区域截取


​​第3周:图像处理技术​​


阈值分割:二值化(threshold)、自适应阈值(adaptiveThreshold)
滤波降噪:均值模糊(blur)、高斯模糊(GaussianBlur)、中值滤波(medianBlur)
边缘检测:Sobel算子、Laplacian算子
形态学操作:腐蚀(erode)、膨胀(dilate)、开闭运算


​​第4周:特征检测与描述​​



角点检测:Harris角点、Shi-Tomasi角点(goodFeaturesToTrack)
边缘提取:Canny算法(重点掌握参数调节)
特征描述子:SIFT/SURF(专利算法)、ORB(实时替代方案)


​​第5周:图像分割与目标识别​​


轮廓分析:findContours 轮廓检测、层次结构解析
目标检测:Haar级联分类器(人脸检测)、HOG + SVM(行人检测)
实战项目:简单物体分类(如数字识别)

5.1 Haar特征级联分类器
  • 人脸检测:使用预训练的Haar特征级联分类器进行人脸检测。


import cv2# 加载预训练的Haar特征级联分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')# 读取图像
image = cv2.imread('example.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))# 绘制检测到的人脸
for (x, y, w, h) in faces:cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)# 显示检测结果
cv2.imshow('Faces', image)
cv2.waitKey(0)
cv2.destroyAllWindows() 
5.2 HOG + SVM
  • 行人检测:使用HOG特征和SVM分类器进行行人检测。

    
    import cv2
    import numpy as np# 加载预训练的HOG描述符
    hog = cv2.HOGDescriptor()
    hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())# 读取图像
    image = cv2.imread('example.jpg')# 检测行人
    regions, _ = hog.detectMultiScale(image, winStride=(4, 4), padding=(4, 4), scale=1.05)# 绘制检测到的行人
    for (x, y, w, h) in regions:cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)# 显示检测结果
    cv2.imshow('Pedest')

​​第6周:视频分析与动态处理​​


 
视频流处理:VideoCapture 读写视频帧
运动检测:帧差法、背景减除(createBackgroundSubtractorMOG2)
光流法:稀疏光流(calcOpticalFlowPyrLK)、稠密光流(DualTVL1OpticalFlow)


​​扩展学习建议​​


1.工具链整合​​


GitCode​​:获取开源项目代码(如车道线检测、AR应用)
​InsCodeAI​​:使用AI辅助生成OpenCV代码片段


2.​​实战资源推荐​​
书籍​​:
《OpenCV轻松入门:基于Python》- 李立宗著
《计算机视觉40例:从入门到深度学习》(含配套代码)
免费教程​​:OpenCV官方文档(opencv.org)


3.​​进阶方向​​


相机模型与标定:cv.calibrateCamera() 实现畸变校正
深度学习集成:YOLO、SSD与OpenCV的dnn模块结合
GUI开发:Qt/PyQt 开发交互式视觉应用

3.VisionPro(美国Cognex)​​

​​定位​​:高精度工业级解决方案,强于机器人引导和实时检测。

​​

阶段1:图形化基础(1周)​​

​​学习内容​​:QuickBuild环境搭建、相机标定、工具链拖拽(PatMax定位、Caliper测量)。
​​

阶段2:工具链精通(2-3周)​​

​​学习内容​​:复杂参数调优(如旋转容忍度)、结果调试(CogToolResult)、ViDi深度学习模块(额外授权)。

​​阶段3:API开发(4-6周)​​

​​学习内容​​:
C#/VB.NET编程:动态加载VPP文件、HMI界面开发(WinForms/WPF)。
系统集成:与PLC通信(EtherNet/IP)、机械臂手眼标定。
​​

阶段4:工业部署​​

​​案例​​:汽车零件全检(±0.02mm精度)、高速生产线实时处理(多线程优化)。
​​

4. VisionMaster(中国海康)​​

​​定位​​:国产化快速开发平台,适合中小型项目快速落地。

​​

阶段1:零代码入门(3-5天)​​

​​学习内容​​:流程图式编程、预置算法(定位/测量/OCR)、GUI参数配置。
​​

阶段2:模块化应用(1-2周)​​

​​学习内容​​:汉字OCR(>99.9%准确率)、条码识别、基础点云处理(限简单场景)。
​​

阶段3:脚本扩展(选学)​​

​​学习内容​​:Python脚本调用OpenCV、EtherCAT机器人通信。
​​实战场景​​:物流分拣、包装日期识别(1小时内部署)。

⚖️ 二、核心维度对比


​​ 

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

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

相关文章

算法-根据前序+中序遍历打印树的右视图

题目请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图数据范围: 0≤n≤100000≤n≤10000 要求: 空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)如输入[1,2,4,5,3],[4,2,5,1,3]时,通过前序遍历…

Kafka面试精讲 Day 7:消息序列化与压缩策略

【Kafka面试精讲 Day 7】消息序列化与压缩策略 在Kafka的高性能消息系统中,消息序列化与压缩是影响吞吐量、延迟和网络开销的核心环节。作为“Kafka面试精讲”系列的第7天,本文聚焦于这一关键主题,深入剖析其原理、实现方式、配置策略及常见…

Xterminal软件下载_Xterminal ssh远程链接工具下载__Xterminal安装包 网盘下载_Xterminal ssh远程链接工具安装包

Xterminal 作为一款国产 SSH 工具,专为开发人员量身打造。它支持 SSH 和 Telnet 协议连接远程服务器与虚拟机,无论是进行代码部署,还是服务器运维,都能轻松胜任。软件界面采用极简设计,黑色背景搭配白色文字&#xff0…

Lua > 洛谷

Lua > 洛谷P1000 超级玛丽游戏P1001 AB ProblemP1008 [NOIP 1998 普及组] 三连击P1035 [NOIP 2002 普及组] 级数求和P1046 [NOIP 2005 普及组] 陶陶摘苹果P1047 [NOIP 2005 普及组] 校门外的树P1085 [NOIP 2004 普及组] 不高兴的津津P1089 [NOIP 2004 提高组] 津津的储蓄计划…

小企业环境-火山方舟和扣子

背景说明 并不是说应该怎么办,而是基本配置有这些可以进行使用,具体不同企业使用的时候肯定要个性化配置。 使用了火山方舟和扣子 火山方舟 应用实验室列表 简单使用了提示词的功能,后端服务ARK_API_KEY 应用ID 来对应请求发送http请求…

QT-事件

Qt事件 除了信号和槽通信机制外,Qt中还提供了事件处理机制实现与用户的交互和对象间的通信。Qt捕获底层操作系统消息,进行封装之后转换为Qt事件,事件处理后才发出信号。 一、事件概述Qt中事件是程序内部或外部发生的动作。比如程序外部&#…

HI3519DRFCV500/HI3519DV500海思核心板IPC算力2.5T图像ISP超高清智能视觉应用提供SDK软件开发包

Hi3519DV500是一颗面向视觉行业推出的超高清智能 SoC。最高支持四路sensor输入,支持最高4K30fps的ISP图像处理能力,支持 2F WDR、多级降噪、六轴防抖、全景拼接、多光 谱融合等多种传统图像增强和处理算法,支持通过AI算法对输入图像进行实时降…

go 初始化组件最佳实践

Go 语言初始化最佳实践 在 Go 语言中, 有一个 init() 函数可以对程序进行包级别的初始化, 但 init() 函数有诸多不便, 例如: 无法返回错误, 进行耗时初始化时, 会增加程序启动时间。因此 init() 函数并不适用于所有初始化。 1.初始化方式 在程序进行初始化时,我们应…

域名暂停解析是怎么回事

域名注册和使用是需要付费的,如果没有及时续费,域名注册商就会暂停该域名的解析服务。相关数据显示,大约有 30% 的域名暂停解析情况是由于欠费引起的。比如,有个小公司的网站域名到期了,负责续费的员工忘记操作&#x…

前端开发的“三剑客”—— ​​HTML、CSS、JavaScript​​

前端开发的“三剑客”—— ​​HTML、CSS、JavaScript​​,是构建所有网页和Web应用的基石。它们分工明确又紧密协作,共同实现了网页的“内容结构”“视觉表现”和“交互行为”。以下是三者的详细解析及协作逻辑:​​1. HTML:网页…

TDengine TIMEDIFF() 函数用户使用手册

TDengine TIMEDIFF() 函数详细使用手册 目录 功能概述函数语法参数说明返回值说明版本变更说明技术特性使用场景及示例时间单位处理数据类型兼容性注意事项常见问题最佳实践 功能概述 TIMEDIFF() 函数用于计算两个时间戳的差值,返回 expr1 - expr2 的结果。结果…

数据结构:栈和队列(上)

汇总代码见:登录 - Gitee.com 上一篇文章:数据结构:双向链表-CSDN博客 与本文相关的结构体传参:自定义类型:结构体-CSDN博客 1.栈 1.1概念和结构 栈:一种特殊的线性表,其只允许在固定的一端…

文档抽取技术:提取非结构化文档中的关键信息,提升档案管理、金融保险和法律合规领域的效率与准确性

在信息爆炸的时代,各种机构、企业等都面临着海量非结构化文档数据的挑战。报告、合同、票据、档案记录、法律文书等文档中蕴藏着巨大的数据,但传统依靠人工阅读、理解和录入的方式效率低下、成本高昂且容易出错。文档抽取技术作为人工智能和自然语言处理…

雷柏VT1 MAX评测:原生中小手形电竞鼠标 但既不仅限于中小手形 也不仅限于电竞

一、前言:真正针对中小手形设计的电竞鼠标 雷柏第二代VT系列电竞鼠标我们已经体验过很多款了,基本都是针对大中手形设计的外形模具,只有VT3s系列是VT3系列的缩小版,更适合中小手形使用,但也只是对中大手形模具重新优化…

新客户 | TDengine 时序数据库赋能开源鸿蒙物联展区实时监控与展示

在工业物联网快速发展的当下,企业普遍面临着两大挑战:一是设备种类繁多、接入标准不一,导致系统建设容易陷入“数据孤岛”;二是实时监控和多场景联动的需求越来越强烈,但传统数据库在高频写入与多维分析上难以兼顾&…

深入剖析 ConcurrentHashMap:Java 并发编程的基石

目录 【1】Java 7 中 ConcurrentHashMap 的实现原理 1.分段锁(Segment) 2. 数据结构 3. 操作流程 【2】Java 8 中 ConcurrentHashMap 的改进 1.红黑树的引入 2.CAS 操作 3.数据结构的变化 【3】ConcurrentHashMap 的常用方法及使用示例 1.put(…

【会员专享数据】2020-2022年我国乡镇的逐日地表气压数据(Shp/Excel格式)

之前我们分享过2020—2022年中国0.01分辨率逐日地表气压栅格数据(可查看之前的文章获悉详情)!该数据是研究者张凌, 胡英屹等发布在国家冰川冻土沙漠科学数据中心平台上的高分辨地表气压数据。很多小伙伴拿到数据后反馈栅格数据不太方便使用&a…

第二阶段WinForm-12:UI控件库

1_验证码与条形码 1.1_条码基础知识 条码:条码是由一组按一定编码规则排列的条、空符号组成,用以表示一定的字符、数字及符号组成的信息 1.2_一维码 (1)Code 128 Code 128 是一种密度很高的字母数字代码系统,可对其…

别再误会了!Redis 6.0 的多线程,和你想象的完全不一样

技术解析核心误区:Redis 6.0是完全多线程的吗?No. Redis 6.0引入的多线程,只用于网络I/O的读写和数据的解析。而核心的命令执行(比如 GET, SET, HGETALL 等)依然是单线程的。Redis的架构演进,就像是把一个复…

23种设计模式——抽象工厂模式(Abstract Factory Pattern)详解

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏:设计模式 ✨特色专栏:知识分享 &#x…