首页/新闻资讯/正文详情

halcon 缺陷检测

发布时间:2026/11/6 5:17:57 来源:云帆数科 栏目:资讯中心
halcon 缺陷检测
破碎饼干检测* 读取图像 read_image (Image, food/hazelnut_wafer_01) ****************************************一 窗口显示设置************************************************************* * 关闭窗口 dev_close_window () * 打开窗口 dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) * 关闭更新 dev_update_window (off) * 设置显示线宽 dev_set_line_width (3) * 设置显示模式为边缘模式margin * dev_set_draw (margin) * 设置显示字体大小 set_display_font (WindowHandle, 20, mono, true, false) ****************************************二 算法处理策略Blob分析特征孔洞的面积和矩形度分析************************************************************* * 遍历缺陷图片 for Index : 1 to 24 by 1 * 1.采集图像 read_image (Image, food/hazelnut_wafer_ Index$.02) *2.图像分割 二值化分割 binary_threshold (Image, Foreground, smooth_histo, light, UsedThreshold) *3.形态学处理 开运算腐蚀 opening_circle (Foreground, FinalRegion, 8.5) * 计算孔洞面积 area_holes (FinalRegion, AreaHoles) * 计算矩形度 rectangularity (FinalRegion, Rectangularity) * 显示图像 dev_display (Image) * 用孔洞面积和矩形度特征来判断NG/OK if (AreaHoles 300 or Rectangularity 0.92) * 设置显示颜色为红色 dev_set_color (red) Text : NG else dev_set_color (forest green) Text : OK endif * 显示缺陷区域 dev_display (FinalRegion) * 显示文本 disp_message (WindowHandle, Text, window, 12, 12, , false) if (Index 24) *在屏幕右下角显示“单击“运行”以继续” disp_continue_message (WindowHandle, black, true) stop () endif endfor瓶嘴破裂检测* 平滑卷积X长度 SmoothX : 501 * 阈值偏置 ThresholdOffset : 25 * 最小缺陷大小 MinDefectSize : 50 * 极坐标分辨率 PolarResolution : 640 * 环大小 RingSize : 70 * 获取空区域对象 get_system (store_empty_region, StoreEmptyRegion) set_system (store_empty_region, false) * 读取图像 read_image (Image, bottles/bottle_mouth_01) * 更新设备 dev_update_off () * 关闭窗口 dev_close_window () dev_close_window () * 打开固定大小窗口 dev_open_window_fit_image (Image, 0, 0, 640, 512, WindowHandle1) * 设置显示字体的大小 set_display_font (WindowHandle1, 16, mono, true, false) * 显示图像 dev_display (Image) * 设置显示模式 dev_set_draw (margin) * 设置显示线宽 dev_set_line_width (3) * 打开固定大小窗口 dev_open_window_fit_size (0, 648, RingSize, PolarResolution, 150, 512, WindowHandle) * dev_open_window_fit_image (Image, 0, 0, 640, 512, WindowHandle1) dev_set_draw (margin) dev_set_line_width (3) dev_set_color (red) * 遍历 for Index : 1 to 16 by 1 * 读取图像 read_image (Image, bottles/bottle_mouth_ Index$.02) * 阈值分割 * 1.获取输入图像的灰度直方图 * 2.使用标准差为Sigma的一维高斯滤波器对直方图进行滤波 * 3.计算滤波后的直方图的极小值 * 4.以计算得到的极小值所对应的灰度值为分割阈值对图像进行分割 * 直方图阈值分割 auto_threshold (Image, Regions, 2) * 选择分割区域 select_obj (Regions, DarkRegion, 1) * 开运算 opening_circle (DarkRegion, RegionOpening, 3.5) * 闭运算 closing_circle (RegionOpening, RegionClosing, 25.5) * 填充 fill_up (RegionClosing, RegionFillUp) * 获取边界 boundary (RegionFillUp, RegionBorder, outer) * 膨胀 dilation_circle (RegionBorder, RegionDilation, 3.5) * 获取区域图像 reduce_domain (Image, RegionDilation, ImageReduced) * 获取边缘 edges_sub_pix (ImageReduced, Edges, canny, 0.5, 20, 40) * 分割轮廓 segment_contours_xld (Edges, ContoursSplit, lines_circles, 5, 4, 2) * 合并轮廓 union_cocircular_contours_xld (ContoursSplit, UnionContours, 0.9, 0.5, 0.5, 200, 50, 50, true, 1) * 轮廓个数 length_xld (UnionContours, Length) * 选择对象 select_obj (UnionContours, LongestContour, sort_index(Length)[|Length| - 1] 1) * 拟合圆轮廓 fit_circle_contour_xld (LongestContour, ahuber, -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder) * * Part 2: Transform the ring-shaped bottle neck region to a rectangle * 生成圆 gen_circle (Circle, Row, Column, Radius) * 膨胀 dilation_circle (Circle, RegionDilation, 5) * 腐蚀 erosion_circle (Circle, RegionErosion, RingSize - 5) *区域相减 difference (RegionDilation, RegionErosion, RegionDifference) * 获取区域图像 reduce_domain (Image, RegionDifference, ImageReduced) * 极坐标转换 polar_trans_image_ext (ImageReduced, ImagePolar, Row, Column, 0, rad(360), Radius - RingSize, Radius, PolarResolution, RingSize, nearest_neighbor) * * Part 3: Find defects with a dynamic threshold * 灰度值拉伸到0-255 scale_image_max (ImagePolar, ImageScaleMax) * 均值滤波 mean_image (ImageScaleMax, ImageMean, SmoothX, 3) * 动态阈值分割 dyn_threshold (ImageScaleMax, ImageMean, Regions1, 55, not_equal) * 连通 connection (Regions1, Connection) * 根据特征选取区域 select_shape (Connection, SelectedRegions, height, and, 9, 99999) * 闭运算 closing_rectangle1 (SelectedRegions, RegionClosing1, 10, 20) * 区域合并 union1 (RegionClosing1, RegionUnion) * re-transform defect regions for visualization polar_trans_region_inv (RegionUnion, XYTransRegion, Row, Column, 0, rad(360), Radius - RingSize, Radius, PolarResolution, RingSize, 1280, 1024, nearest_neighbor) * Part 4: Display results * 显示结果 dev_set_window (WindowHandle1) dev_display (Image) dev_set_color (blue) dev_display (RegionDifference) dev_set_color (red) dev_display (XYTransRegion) * display polar transformed inspected region with results * The image and resulting region are rotated by 90 degrees * only for visualization purposes! (I.e. to fit better on the screen) * The rotation is NOT necessary for the detection algorithm. dev_set_window (WindowHandle) * 旋转图像重要 rotate_image (ImagePolar, ImageRotate, 90, constant) dev_display (ImageRotate) * 区域计数 count_obj (RegionUnion, Number) if (Number 0) mirror_region (RegionUnion, RegionMirror, diagonal, PolarResolution) mirror_region (RegionMirror, RegionMirror, row, PolarResolution) dev_display (RegionMirror) disp_message (WindowHandle1, Not OK, window, 12, 12, red, false) else disp_message (WindowHandle1, OK, window, 12, 12, forest green, false) endif if (Index 16) disp_continue_message (WindowHandle1, black, true) stop () endif endfor * Reset system parameters set_system (store_empty_region, StoreEmptyRegion)塑料网孔检测read_image (Image, plastic_mesh/plastic_mesh_06) read_image (Image, plastic_mesh/plastic_mesh_01) * Blob分析动态阈值分割特征分析面积 mean_image (Image, ImageMean, 49, 49) dyn_threshold (Image, ImageMean, RegionDynThresh, 5, dark) * 打散 connection (RegionDynThresh, ConnectedRegions) * 筛选 select_shape (ConnectedRegions, SelectedRegions, area, and, 400, 99999) count_obj (SelectedRegions, Number) if(Number0) dev_get_window (WindowHandle) disp_message (WindowHandle, NG, window, 12, 12, red, true) else dev_get_window (WindowHandle) disp_message (WindowHandle, OK, window, 12, 12, green, true) endif* 窗口设置 dev_update_window (off) * 读取图像 read_image (Image, plastic_mesh/plastic_mesh_01) * 关闭窗口 dev_close_window () * 获取图像大小 get_image_size (Image, Width, Height) * 设置窗口显示 dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowHandle) set_display_font (WindowHandle, 18, mono, true, false) dev_set_draw (margin) dev_set_line_width (3) * 遍历 for J : 1 to 14 by 1 * 读取图像 read_image (Image, plastic_mesh/plastic_mesh_ J$02) * 中值滤波 mean_image (Image, ImageMean, 49, 49) * 动态阈值分割 dyn_threshold (Image, ImageMean, RegionDynThresh, 5, dark) * 连通 connection (RegionDynThresh, ConnectedRegions) * 通过面积选取特征区域 select_shape (ConnectedRegions, ErrorRegions, area, and, 500, 99999) * 计数 count_obj (ErrorRegions, NumErrors) * 显示结果 dev_display (Image) dev_set_color (red) dev_display (ErrorRegions) * If the number of errors exceeds zero, the message Mesh not * OK is displayed. Otherwise the web is undamaged * and Mesh OK is displayed. if (NumErrors 0) disp_message (WindowHandle, Mesh not OK, window, 24, 12, black, true) else disp_message (WindowHandle, Mesh OK, window, 24, 12, black, true) endif * If the sequence number of the image to be inspected is * lower than 14, the request to press Run to continue appears. * If the last image is read, pressing Run will clear the SVM. if (J 14) disp_continue_message (WindowHandle, black, true) stop () endif endfor毛刺检测* blob分析 以阈值分割为基础提取区域 * 差分把带有缺陷的区域和不带缺陷的区域相减得到缺陷区域 * 特征分析面积、宽度、高度等待特征信息判定是不是缺陷 * 读取图像 read_image (Image, fin1) * blob分析提取带缺陷的区域 binary_threshold (Image, Region, max_separability, dark, UsedThreshold) * 获取不带缺陷的区域 * 腐蚀 后膨胀 opening_rectangle1 (Region, RegionOpening, 60,60) difference (Region, RegionOpening, RegionDifference) opening_rectangle1 (RegionDifference, RegionOpening1, 10, 10) * 特征分析 area_center (RegionOpening1, Area, Row, Column) if(Area1000) dev_get_window (WindowHandle) disp_message (WindowHandle,NG, window, 12, 12, red, true) endif* 窗口设置 dev_update_window (off) * 读取图像 read_image (Fins, fin [1:3]) * 获取图像大小 get_image_size (Fins, Width, Height) * 设置窗口显示 dev_close_window () dev_open_window (0, 0, Width[0], Height[0], black, WindowID) set_display_font (WindowID, 14, mono, true, false) * 遍历 for I : 1 to 3 by 1 * 选取图像 select_obj (Fins, Fin, I) * 显示图像 dev_display (Fin) * 二值化分割 binary_threshold (Fin, Background, max_separability, light, UsedThreshold) binary_threshold (Fin, Foreground, max_separability, dark, UsedThreshold1) * 设置窗口显示 dev_set_color (blue) dev_set_draw (margin) dev_set_line_width (4) dev_display (Background) disp_continue_message (WindowID, black, true) stop () * 闭运算 closing_circle (Background, ClosedBackground, 250) * 开运算 opening_rectangle1 (Foreground, RegionOpening, 50, 100) * 设置窗口显示 dev_set_color (green) dev_display (ClosedBackground) disp_continue_message (WindowID, black, true) stop () * 区域相减 difference (ClosedBackground, Background, RegionDifference) difference (Foreground, RegionOpening, RegionDifference1) * 开运算 opening_rectangle1 (RegionDifference, FinRegion, 5, 5) opening_rectangle1 (RegionDifference1, FinRegion2, 5, 5) * 显示结果 dev_display (Fin) dev_set_color (red) dev_display (FinRegion) * 获取区域面积和中心 area_center (FinRegion, FinArea, Row, Column) if (I 3) disp_continue_message (WindowID, black, true) stop () endif endforpcb板断栅检测read_image (Image, pcb) * 差分 带缺陷的图像 - 不带缺陷的图像 得到缺陷 * 灰度图像的膨胀和腐蚀 * 对原图进行灰度的开操作(把缺陷区域合并起来了) gray_opening_shape (Image, ImageOpening, 7, 7, octagon) * 灰度开操作 gray_closing_shape (Image, ImageClosing, 7, 7, octagon) * 相减操作 dyn_threshold (ImageOpening, ImageClosing, RegionDynThresh, 80, dark) area_center (RegionDynThresh, Area, Row, Column) if(Area200) dev_get_window (WindowHandle) disp_message (WindowHandle, NG, window, 12, 12, red, true) endif* 窗口设置 dev_update_window (off) * 读取图像 read_image (Fins, fin [1:3]) * 获取图像大小 get_image_size (Fins, Width, Height) * 设置窗口显示 dev_close_window () dev_open_window (0, 0, Width[0], Height[0], black, WindowID) set_display_font (WindowID, 14, mono, true, false) * 遍历 for I : 1 to 3 by 1 * 选取图像 select_obj (Fins, Fin, I) * 显示图像 dev_display (Fin) * 二值化分割 binary_threshold (Fin, Background, max_separability, light, UsedThreshold) binary_threshold (Fin, Foreground, max_separability, dark, UsedThreshold1) * 设置窗口显示 dev_set_color (blue) dev_set_draw (margin) dev_set_line_width (4) dev_display (Background) disp_continue_message (WindowID, black, true) stop () * 闭运算 closing_circle (Background, ClosedBackground, 250) * 开运算 opening_rectangle1 (Foreground, RegionOpening, 50, 100) * 设置窗口显示 dev_set_color (green) dev_display (ClosedBackground) disp_continue_message (WindowID, black, true) stop () * 区域相减 difference (ClosedBackground, Background, RegionDifference) difference (Foreground, RegionOpening, RegionDifference1) * 开运算 opening_rectangle1 (RegionDifference, FinRegion, 5, 5) opening_rectangle1 (RegionDifference1, FinRegion2, 5, 5) * 显示结果 dev_display (Fin) dev_set_color (red) dev_display (FinRegion) * 获取区域面积和中心 area_center (FinRegion, FinArea, Row, Column) if (I 3) disp_continue_message (WindowID, black, true) stop () endif endfor吸嘴检测* 差分带缺陷的区域-不带缺陷的区域 缺陷 * 进行特征获取缺陷区域的面积、宽高等进行是否是NG品的判定 * 读取图像 read_image (Image, hull) * blob分析 区域提取 threshold (Image, Region, 0, 90) fill_up (Region, RegionFillUp) * 先膨胀后腐蚀 closing_rectangle1 (RegionFillUp, RegionClosing, 30, 30) * 去杂质(不带缺陷区域) opening_rectangle1 (RegionClosing, RegionOpening, 10, 10) * 获取带缺陷的区域 shape_trans (RegionOpening, RegionTrans, convex) * 差分 difference (RegionTrans, RegionOpening, RegionDifference) opening_circle (RegionDifference, RegionOpening1,8) area_center (RegionOpening1, Area, Row, Column) if(Area3000) dev_get_window (WindowHandle) disp_message (WindowHandle, NG, window, Row, Column, red, true) else dev_get_window (WindowHandle) disp_message (WindowHandle, OK, window, 12, 12, green, true) endif******************************************第一步 初始化************************************************** *读取一张图像 read_image (Hull, hull) *获取图像大小 get_image_size (Hull, Width, Height) *关闭已经打开的窗口 dev_close_window () *打开一个新的窗口 dev_open_window (0, 0, Width, Height, black, WindowID) *显示图像 dev_display (Hull) ******************************************第二步 图像处理************************************************** *阈值操作,分割2.阈值分割出吸嘴 threshold (Hull, Dark, 0, 80) * 补集运算,获取背景区域 difference (Hull, Dark, Light) *对背景区域进行连通处理 connection (Light, ConnectedRegions) *过滤出背景区域 select_shape (ConnectedRegions, NoHullCand, area, and, 50000, 9999999) *对过滤的背景区域进行闭运算,填充背景间隙和平滑背景边界 closing_circle (NoHullCand, NoHull, 13.5) *补集运算,获取吸嘴区域重要 difference (Hull, NoHull, Region) *对吸嘴区域开运算 opening_circle (Region, RegionOpening, 2.5) *对吸嘴区域进行连通处理 connection (RegionOpening, ConnectedRegions) *过滤出吸嘴区域 select_shape (ConnectedRegions, RegionHull, area, and, 5000, 9999999) *将吸嘴区域转换为凸包区域重要 shape_trans (RegionHull, ConvexHull, convex) *补集运算,获取吸嘴的缺口重要 difference (ConvexHull, RegionHull, Region) *对吸嘴缺口区域进行连通处理 connection (Region, ConnectedRegions) *过滤出吸嘴缺口 select_shape (ConnectedRegions, LargeHoles, area, and, 2000, 99999) select_shape (LargeHoles, Holes, convexity, and, 0, 0.85) *显示图像 dev_display (Hull) *设置输出对象的线宽度 dev_set_line_width (5) *设置区域的填充方式 dev_set_draw (margin) *设置输出对象显示颜色为红色 dev_set_color (red) *显示吸嘴缺口 dev_display (Holes)

相关推荐

新手fimga点餐移动应用简易版教程1
新手fimga点餐移动应用简易版教程1

新手fimga点餐移动应用简易版教程11.画出合适的画框 准备好需要的组件 设置布局参考线 边数为4 边距为20 间距为122.用矩形将各个位置的底部组件框出来(定位)----导航栏 标签栏 中间切换按钮以及卡片部分3.导航栏的高为44 将矩形的圆角半径拉到20 填充颜… · 2026/11/6 5:17:57

第318篇 单向数据流实践:State 与 Event 分离
第318篇 单向数据流实践:State 与 Event 分离

承接上一篇《UseCase 与领域层:要不要为每个页面写一层》,上一篇把业务编排放在了 UseCase 里,但界面层还有一团乱麻等着收拾:状态和事件混在一起、旋转屏幕后重复弹窗、退出登录后状态没清干净。这些问题的共同根因只有一个——没有把「界面现在是什么」和「界面发生了什么… · 2026/11/6 5:16:57

第320篇 多模块构建优化:增量与并行
第320篇 多模块构建优化:增量与并行

承接上一篇《错误处理架构:统一异常层设计》,上一篇处理了运行时的错误,这一篇处理构建期的耗时。对很多团队来说,一次完整构建 8 分钟、增量构建 2 分钟这件事带来的痛苦是持续的——每天改几行代码就要等两分钟,一个需求下来能浪费掉一两个小时。 结论先行:构建优化只… · 2026/11/6 5:16:57

大模型实操指南:从本地部署到PPT级可控生成
大模型实操指南:从本地部署到PPT级可控生成

1. 这不是“学大模型”,而是重建你和信息世界的关系“大模型相关内容的研究学习”——看到这个标题,我第一反应是笑。不是嘲笑,是那种在实验室熬了三个通宵、刚调通一个LoRA微调任务后,盯着终端里跳出来的loss曲线突然失语的笑。因… · 2026/11/6 15:59:18

高效查找第K大元素:排序、堆与快速选择算法对比
高效查找第K大元素:排序、堆与快速选择算法对比

1. 问题描述与核心挑战 给定整数数组 nums 和整数 k,我们需要找到数组中第 k 个最大的元素。请注意,这里要求的是排序后的第 k 个最大元素,而不是第 k 个不同的元素。 这个问题看似简单,但隐藏着几个关键挑战: 当数组… · 2026/11/6 15:05:13

企业设备数字化管理:易点易动系统实践指南
企业设备数字化管理:易点易动系统实践指南

1. 设备管理在企业数字化转型中的核心价值 设备管理作为企业资产管理的重要组成部分,正在经历从传统人工记录向数字化、智能化管理的转变。在制造业、医疗、教育等行业,设备资产往往占据企业总资产的60%以上,其管理效率直接影响企业运营成本和… · 2026/11/6 15:05:13

企业元宇宙治理框架:技术实现与合规路径
企业元宇宙治理框架:技术实现与合规路径

1. 企业元宇宙治理框架的核心逻辑 企业元宇宙作为数字化转型的新阶段,其治理框架需要兼顾技术创新与合规要求。从技术架构角度看,企业元宇宙本质上是一个由数字孪生、区块链、人工智能等技术构成的复杂系统。这个系统需要解决三个核心问题:如… · 2026/11/6 14:59:51

基于CDC的MySQL实时数据同步方案实践
基于CDC的MySQL实时数据同步方案实践

1. 项目背景与核心价值 在数据驱动的业务场景中,数据库表间数据同步是个高频需求。我最近在电商订单系统中就遇到了这个问题:订单主表数据变更后,需要实时同步到统计分析表和风控表。传统的手动同步或定时任务方式存在延迟高、易出错的问题&a… · 2026/11/6 14:00:34

JSP农贸交易系统开发与智能撮合算法实践
JSP农贸交易系统开发与智能撮合算法实践

## 1. 项目概述与核心价值农贸产品交易系统是连接农产品生产端与消费端的重要数字化桥梁。这个基于JSP技术的交易平台(项目编号g3608)完整包含了程序源码、数据库设计、部署指南和开发环境配置,是一套开箱即用的农产品B2B解决方案。我在参与某… · 2026/11/6 14:00:34

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码