测量镙丝钉的例子measure_screw注释

HALCON 20.11:学习笔记---一维测量(Measuring) HALCON 20.11:学习笔记---一维测量(Measuring) 本章主要提供有关一维测量的信息。 一维测量的概念 通过一维测量可以沿着预定义的线或弧定位从亮到暗或从暗到亮的过渡边缘。这使您可以快速、轻松地高精度测量零件的尺寸。注意,如果您想要测量几何图元(如圆、椭圆、矩形或线)的尺寸,并且位置、方向和几何形状的近似值是已知的,那么二维测量可能是一个合适的替代方法。 沿着直线(1)或弧线(2)测量边缘和它们之间的距离 下面简要介绍使用一维测量所需的步骤。 生成测量对象 首先,必须生成 阅读详情
* This program inspects the dimensions of a screw
* 
dev_update_off ()
* 镙纹测量
* step: acquire image
* 
read_image (Image, 'screw_thread')
get_image_pointer1 (Image, Pointer, Type, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width/2, Height/2, 'light gray', WindowID)
dev_set_part (0, 0, Height-1, Width-1)
dev_set_line_width (2)
dev_set_color ('blue')
dev_set_draw ('margin')
dev_display (Image)
set_display_font (WindowID, 14, 'courier', 'true', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
* 
* step: initialize visualization
* 
dev_set_draw ('fill')
dev_set_line_width (2)
dev_set_color ('black')
* 
* step: get orientation via region processing
* 
*二值化
threshold (Image, Region, 0, 100)
*区域方向
orientation_region (Region, OrientationRegion)
*区域中心点和面积
area_center (Region, Area, RowCenter, ColumnCenter)
* 
* step: rotate screw region to become vertical
* 把目标变换正
vector_angle_to_rigid (RowCenter, ColumnCenter, OrientationRegion, RowCenter, ColumnCenter, rad(90), HomMat2DRotate)
affine_trans_region (Region, RegionAffineTrans, HomMat2DRotate, 'false')
dev_clear_window ()
disp_message (WindowID, 'Region (transformed)', 'window', -1, -1, 'black', 'false')
dev_display (RegionAffineTrans)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* 
* step: get width of the screw via region processing
* 
*闭运算,填充的作用
closing_circle (RegionAffineTrans, RegionToProcess, 4.5)
dev_clear_window ()
disp_message (WindowID, 'Region (transformed)', 'window', -1, -1, 'black', 'false')
dev_display (RegionToProcess)
* 查询一个区域的扫描宽度编码,返回每行对应的列起点ColumnBegin和终点ColumnEnd,行存于RowRegionRuns中
get_region_runs (RegionToProcess, RowRegionRuns, ColumnBegin, ColumnEnd)
NumberLines := |RowRegionRuns|
*取中间的区域.
ColumnBeginSelected := ColumnBegin[90:(NumberLines-90)]
ColumnEndSelected := ColumnEnd[90:(NumberLines-90)]
*长度
Diameter := ColumnEndSelected-ColumnBeginSelected+1
* 
* statistics
*平均值
meanDiameter := mean(Diameter)
*最小值
minDiameter := min(Diameter)
*最大值
maxDiameter := max(Diameter)
* 
* visualization
dev_set_color ('white')
gen_region_line (ScanLine1, RowRegionRuns[90], ColumnBegin[90], RowRegionRuns[90], ColumnEnd[90])
gen_region_line (ScanLine2, RowRegionRuns[NumberLines-90], ColumnBegin[NumberLines-90], RowRegionRuns[NumberLines-90], ColumnEnd[NumberLines-90])
dev_display (ScanLine1)
dev_display (ScanLine2)
disp_cross (WindowID, RowRegionRuns[90], ColumnBegin[90], 20, 0)
disp_cross (WindowID, RowRegionRuns[90], ColumnEnd[90], 20, 0)
disp_cross (WindowID, RowRegionRuns[NumberLines-90], ColumnBegin[NumberLines-90], 20, 0)
disp_cross (WindowID, RowRegionRuns[NumberLines-90], ColumnEnd[NumberLines-90], 20, 0)
disp_message (WindowID, 'Width of object', 'image', 10, 720, 'black', 'false')
disp_message (WindowID, 'per row (between ', 'image', 60, 720, 'black', 'false')
disp_message (WindowID, 'the white lines):', 'image', 110, 720, 'black', 'false')
disp_message (WindowID, 'mean width: '+meanDiameter + ' pixels', 'image', 210, 720, 'black', 'false')
disp_message (WindowID, 'minimum width: '+minDiameter + ' pixels', 'image', 260, 720, 'black', 'false')
disp_message (WindowID, 'maximum width: ' +maxDiameter + ' pixels', 'image', 310, 720, 'black', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
* 
* step: get transformed contours and corresponding regression lines
* 
* create ROI
**************亚像素轮廓方法计算**********************
*边界
boundary (Region, RegionBorder, 'inner_filled')
*膨胀
dilation_circle (RegionBorder, RegionDilation, 7.5)
*剪切图片
reduce_domain (Image, RegionDilation, ImageReduced)
dev_clear_window ()
dev_display (ImageReduced)
disp_message (WindowID, 'ROI for contour extraction', 'window', -1, -1, 'white', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
* 
* extract contours and regression lines using Laplace
sigma := 3
*高斯导数滤波用作 平滑滤波器(使用分水岭算法watershed得到contours)
derivate_gauss (ImageReduced, DerivGauss, sigma, 'laplace')
*根据子像素准确性从一幅图像中提取零相交
zero_crossing_sub_pix (DerivGauss, Edges)
*选择XLD
select_contours_xld (Edges, SelectedEdges, 'contour_length', 3000, 99999, -0.5, 0.5)
*变换
affine_trans_contour_xld (SelectedEdges, ContoursAffinTrans, HomMat2DRotate)
*计算每个区域的坐标(连续/栏)的包围矩形
smallest_rectangle1_xld (ContoursAffinTrans, Row11, Column11, Row21, Column21)
*剪切XLD
clip_contours_xld (ContoursAffinTrans, ClippedContours, Row11+90, 0, Row21-90, Width)
*直线段轮廓拟合直线
fit_line_contour_xld (ClippedContours, 'regression', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist1)
dev_clear_window ()
dev_display (ClippedContours)
disp_message (WindowID, 'Contours (transformed and clipped)', 'window', -1, -1, 'black', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
* 
* step: get deviations of the contours from the regression lines
* 
*生成右XLD线段
gen_contour_polygon_xld (RegressContour0, [RowBegin[0], RowEnd[0]], [ColBegin[0], ColEnd[0]])
*选择右对象
select_obj (ClippedContours, EdgeContour0, 1)
*查询XLD坐标点
get_contour_xld (EdgeContour0, RowEdge0, ColEdge0)
*计算与边缘的最大最小值,平均值。
distance_pc (RegressContour0, RowEdge0, ColEdge0, DistanceMin0, DistanceMax0)
minDistance0 := min(DistanceMin0)
maxDistance0 := max(DistanceMin0)
meanDistance0 := mean(DistanceMin0)
* 
gen_contour_polygon_xld (RegressContour1, [RowBegin[1], RowEnd[1]], [ColBegin[1], ColEnd[1]])
select_obj (ClippedContours, EdgeContour1, 2)
get_contour_xld (EdgeContour1, RowEdge1, ColEdge1)
distance_pc (RegressContour1, RowEdge1, ColEdge1, DistanceMin1, DistanceMax1)
minDistance1 := min(DistanceMin1)
maxDistance1 := max(DistanceMin1)
meanDistance1 := mean(DistanceMin1)
dev_clear_window ()
* 
* numerical visualization
dev_set_color ('gray')
dev_display (EdgeContour0)
dev_display (EdgeContour1)
dev_set_color ('black')
disp_message (WindowID, 'Contours (transformed and clipped)', 'image', 10, 10, 'black', 'false')
dev_display (RegressContour0)
dev_display (RegressContour1)
disp_message (WindowID, 'Maximum distances', 'image', 10, 720, 'black', 'false')
disp_message (WindowID, 'between contours', 'image', 60, 720, 'black', 'false')
disp_message (WindowID, 'and regression lines:', 'image', 110, 720, 'black', 'false')
* 
disp_message (WindowID, 'max (contour/edge 0): ', 'image', 210, 720, 'black', 'false')
disp_message (WindowID, maxDistance0$'.4' + ' pixels', 'image', 260, 720, 'black', 'false')
* 
disp_message (WindowID, 'max (contour/edge 1): ', 'image', 360, 720, 'black', 'false')
disp_message (WindowID, maxDistance1$'.4' + ' pixels', 'image', 410, 720, 'black', 'false')
* 
disp_message (WindowID, '0', 'image', RowEnd[0] + 20, ColEnd[0] -9, 'black', 'false')
disp_message (WindowID, '1', 'image', RowEnd[0] + 20, ColEnd[0] -9, 'black', 'false')
* 
* graphical visualization in zoom window
dev_set_color ('white')
dev_set_draw ('margin')
gen_rectangle1 (Rectangle1, 500, 620, 550, 680)
dev_display (Rectangle1)
dev_open_window (0, Width/2+2, 300, 300, 'light gray', WindowHandleZoom)
dev_set_part (500, 620, 550, 680)
dev_set_color ('black')
dev_display (EdgeContour0)
dev_display (RegressContour0)
get_contour_xld (RegressContour0, RowContour0, ColContour0)
for i := 800 to 950 by 1
    projection_pl (RowEdge0[i], ColEdge0[i], RowContour0[0], ColContour0[0], RowContour0[1], ColContour0[1], RowProj0, ColProj0)
    gen_contour_polygon_xld (Contour, [RowEdge0[i], RowProj0], [ColEdge0[i], ColProj0])
    dev_display (Contour)
endfor
disp_continue_message (WindowID, 'black', 'true')
stop ()
dev_close_window ()
dev_set_window (WindowID)
* 
* step: get distance between the two regression lines
* 
distance_pp (RowBegin[1], ColBegin[1], RowEnd[0], ColEnd[0], Distance1)
distance_pp (RowBegin[0], ColBegin[0], RowEnd[1], ColEnd[1], Distance2)
if (abs(Distance1-Distance2)<1)
    * 
    * visualization
    dev_clear_window ()
    dev_set_color ('gray')
    dev_display (EdgeContour0)
    dev_display (EdgeContour1)
    dev_set_color ('black')
    disp_message (WindowID, 'Contours (transformed and clipped)', 'image', -1, -1, 'black', 'false')
    dev_display (RegressContour0)
    dev_display (RegressContour1)
    disp_message (WindowID, 'Mean distance', 'image', 10, 720, 'black', 'false')
    disp_message (WindowID, 'between regression', 'image', 60, 720, 'black', 'false')
    disp_message (WindowID, 'lines:', 'image', 110, 720, 'black', 'false')
    disp_message (WindowID, ((Distance1+Distance2)/2)$'.4' + ' pixels', 'image', 210, 720, 'black', 'false')
    dev_set_draw ('fill')
    dev_set_color ('white')
    disp_arrow (WindowID, RowEnd[1] +100, ColEnd[1], RowBegin[0] +100, ColBegin[0], 2)
    disp_arrow (WindowID, RowBegin[0] +100, ColBegin[0], RowEnd[1] +100, ColEnd[1], 2)
else
    dev_set_color ('black')
    disp_message (WindowID, 'Contours (transformed and clipped)', 'image', -1, -1, 'black', 'false')
    dev_display (RegressContour0)
    dev_display (RegressContour1)
    disp_message (WindowID, 'RegressContours', 'image', 10, 720, 'black', 'false')
    disp_message (WindowID, 'are not parallel', 'image', 60, 720, 'black', 'false')
endif
STM32F407硬件IIC驱动OLED避坑实录:从‘不显示’到‘稳定刷屏’的完整调试过程 本文详细记录了使用STM32F407硬件IIC驱动OLED屏幕的完整调试过程,从初始的‘不显示’问题到最终实现‘稳定刷屏’。文章涵盖了硬件接线、I2C外设配置、常见问题排查及性能优化技巧,特别针对STM32标准库开发中的难点提供了实用解决方案,是嵌入式开发者驱动OLED屏幕的实用指南。 阅读详情

相关推荐

阅文集团大数据面试题及参考答案

在 Flink 中,watermark 是一种用于处理乱序事件时间的机制。实现接口:通常需要实现 AssignerWithPeriodicWatermarks 或 AssignerWithPunctuatedWatermarks 接口。前者会周期性地生成 watermark,后者则是基于某些特定事件来生成 watermark ,比如接收到某个特定值的消息时。定义位置:可以在数据源处或者在流处理的中间操作中定义 watermark。在数据源定义时,能更精准地根据数据的产生特性设置 watermark;

大模型大数据攻城狮的专栏 1089

halcon 相机标定

This example shows how to perform the basic calibration of a single camera with multiple images of a calibration object. dev_update_off () Initialize visualization *第一个参数:在给定的文件夹’calib’,halcon默认的目录

渣渣的博客 1520

VMware报错系列:虚拟机配置文件(.vmx)损坏或丢失---修复

虚拟机配置文件(.vmx)损坏或丢失---修复

weixin_54626591的博客 7012

HALCON关于显示的函数与介绍(持续更新)

halcon关于显示算子解读dev_update_off dev_update_on、dev_update_pc、dev_update_var、dev_update_window、dev_update_off 、dev_update_pc 、dev_update_var、dev_update_window、dev_close_window、dev_open_window、set_display_font、dev_set_draw、disp_message、disp_continue_message

优快云博客 1万+

如何对EMB电子机械制动器的热衰退问题进行优化

摘要 电子机械制动器(EMB)在新能源汽车和自动驾驶中具有重要应用价值,但其在高强度工况下会出现热衰退现象。本文分析了EMB热衰退的五大机理:摩擦副热效应、电机热衰退、减速机构热失效、温度对控制策略干扰以及结构设计导致的热积累。针对这些问题,提出了从材料、结构、控制三个维度的优化措施:升级耐高温材料、改进散热设计、优化控制算法等。通过"热生成抑制-热传导优化-热失效补偿"的系统方案,可有效改善EMB的热衰退问题,为智能汽车提供更可靠的制动保障。

m0_59012156的博客 342

大语言模型与ROS集成的自然语言机器人控制:开源框架与应用实例

近年来,大语言模型(LLM)与机器人操作系统(ROS)的集成逐步成熟,使得自然语言驱动的机器人控制成为可能。用户输入“捡起绿色方块”或“把微波炉里的饭热好端过来”这类日常语句,机器人能够自动拆解步骤、规划动作并执行。本文梳理2026年前后发布的三个代表性开源框架——ROS-LLM、ROSClaw以及LLM+Nav2基准测试系统,介绍其技术路径与工程落地情况。

Studying…… 634

乱序芯片文字标签识别【halcon官方案例】

本地函数initialize_visualization。基于形状的模版匹配+仿射变换+文字识别视觉方案。

weixin_45844534的博客 125

c语言实现求一个矩阵特征值和特征向量

前言 求矩阵的特征值,主要是用的QR分解,在我的有一次博客里,我已经详细地给出了计算的过程,大家有兴趣可以去看下,经过几天的钻研,终于完成了整个的eig算法。下面我将把我的整个代码附上,有不懂的可以问我,欢迎一起讨论学习! 这是对上一次的修改版,上一次写的程序是在C++编译环境下编译的,所以放在c里面编译有些会出错。 最后,如果有不对的地方希望大...

qq_36417014的博客 2万+

【机器视觉】 measure_projection算子

00. 目录 文章目录00. 目录01. 概述02. 签名03. 描述04. 注意05. 参数06. 结果07. 附录 01. 概述 measure_projection - 提取垂直于矩形或圆弧的灰度值分布。 02. 签名 measure_projection(Image : : MeasureHandle : GrayValues) 03. 描述 measure_projection提取垂直于矩形或环形弧的一维灰度值分布。 这是通过平均垂直于矩形或弧长轴的“切片”中的灰度值来完成的。 采样是在矩形中心的

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 1444

企业数据治理体系中的AI与业务融合:架构师的3个成功案例

企业数据治理的痛点从来不是“有没有做”,而是“做了之后有没有用”——很多企业花了数百万建数据仓库、做元数据管理,最后却陷入“数据躺在库里睡大觉”“AI模型因数据质量差而失效”的困境。本文通过零售、金融、制造3个真实案例,拆解架构师如何用AI连接数据治理与业务场景:从“客户画像不准”到“精准推荐提升30%转化率”,从“欺诈检测漏报”到“实时拦截减少50%损失”,从“库存积压”到“供应链周转率提升20%”。如何让数据治理从「合规驱动」转向「价值驱动」?

AI 原生应用开发的博客 992

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了LCC补偿网络的恒流输出、软开关实现和抗偏移能力等优势,并对比了不同补偿拓扑特性。随后分步骤讲解了Simulink建模流程,包括LCC主电路构建、关键参数设计、双闭环控制系统实现等核心环节。重点阐述了移相控制策略和软开关验证方法,提供了系统效率计算和抗偏移测试的调试技巧。最后展示了仿真结果,在耦合系数变化20%时,闭环系统仍能保持输出电压稳定在±2%波动范围内。文章还探讨了工程扩展方向,并针对常见问题给出了解决方案,为无

xiaoheshang_123的博客 539

HALCON示例程序measure_screw.hdev螺纹尺寸测量

HALCON示例程序measure_screw.hdev螺纹尺寸测量 get_region_runs 、gen_region_line 、derivate_gauss、zero_crossing_sub_pix、clip_contours_xld、gen_contour_polygon_xld、get_contour_xld 、distance_pc 、projection_pl - 计算点到线的投影。gen_contour_polygon_xld

优快云博客 3770

电源防反接保护电路全攻略实战A04

本文深入剖析了硬件设计中电源保护电路的关键技术与实战经验。文章指出,保护电路虽小但至关重要,通过对比分析二极管与MOSFET防反接方案,揭示了MOSFET在效率、温控方面的优势。针对过压保护,重点讲解了TVS二极管选型要点,强调钳位电压而非击穿电压才是保护核心。文章结合工业案例(如48V通信模块烧毁、5V系统MOSFET过热等),详细阐述了PCB布局规范、热设计路径等工程细节,并提供了USB接口ESD防护的完整选型方案。最后强调硬件设计必须考虑最坏工况,在成本与性能间找到平衡点,避免因小失大。

启芯硬件的博客 777

halcon C++编程 第18讲 文本显示绘图(鼠标绘图拖动)函数(tcy)

1.1.显示函数:disp_缩放文本绘图消失 disp_text 在窗口中显示文本 disp_cross 在窗口中显示十字 disp_arrow 在窗口中显示箭头 disp_line 在窗口中绘制线条 disp_circle 在窗口中显示圆圈 disp_arc 在窗口中显示圆弧 disp_ellipse 显示椭圆 disp_rectangle1 显示与坐标轴对齐的矩形 disp_.

tcy-阿春 4661

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【halcon】 DispCross 显示的叉叉 缩放后有的叉叉离奇消失

DispCross 显示的叉叉 缩放后有的叉叉离奇消失。有的消失,有的没消失,搜索了百度谷歌,均为答非所问,没有答案。直到我问了下GPT,她一语道破玄机!

songhuangong123的博客 1767

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

halcon案例measure_screw

此例,提取螺丝区域并转正,掐头去尾选择合适的区域并用拉普拉斯的方式拟合直线derivate_gauss (ImageReduced, DerivGauss, sigma, 'laplace') zero_crossing_sub_pix (DerivGauss, Edges),计算拟合的直线,和轮廓上的点的最大最小的均值距离。

weixin_36672036的博客 1071

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

机器视觉HALCON-机器视觉标定和测量

一、设计任务摄像机标定要求自制标定板,使用网络摄像机或手机摄像头进行标定。将标定的摄像机内参和外参进行保存。设计测量方案,使用标定过的摄像机对包含图像能识别的垂直边缘的物品(直尺,画直线的纸张等),进行距离或边长的测量。标定过程和测量过程,均需要保持摄像机与测量平面之间的距离固定,物品高度不能过高,否则影响测量结果。给出设计的中间过程和截图以及最终测量结果,并对测量结果进行误差计算和分析。二、总体...

NiYintang的博客 2万+

halcon 1维测量

1维测量主要是测量沿着直线和圆弧的距离和角度。 2维测量主要是测量物体的大小和方向。 3维测量主要是测量物体在3维世界里的世界坐标。 Chapter 1 开关销的测量,因为它可以用一条直线测量,因此采用一维测量。 gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height,Interpolati...

fanre的专栏 4805

Halcon二维仿射变换实例探究

Halcon二维仿射变换实例探究 二维仿射变换,顾名思义就是在二维平面内,对对象进行平移、旋转、缩放等变换的行为(当然还有其他的变换,这里仅论述这三种最常见的)。 Halcon中进行仿射变换的常见步骤如下: ① 通过hom_mat2d_identity算子创建一个初始化矩阵(即[1.0, 0.0, 0.0, 0.0, 1.0, 0.0]); ② 在初始化矩阵的基础上,使用hom_ma...

以梦为马 不负韶华 928

halcon测量总结

halcon测量总结

knieA的博客 2219

Halcon回顾之1D Measuring以及扩展实现直线和圆的检测

使用halcon的基础算子扩展实现直线和圆的亚像素级精确定位

xiaochuideai的博客 2091

halcon-画十字架

*用十字画出圆心位置 disp_cross (WindowHandle1, R[0], R[1], 10, 0) gen_cross_contour_xld (Cross, Size - Y, X, 15, 0.785398) % 将坐标点变成十字架图标。

cuhinzozfi的博客 1万+

HALCON从入门到入门-点投影到线上(求点到线的垂线,点)

projection_pl(操作员)名字projection_pl— 计算点在直线上的投影。签名描述运算符计算 点 (projection_pl) 添加到一条线上,该行为 由两个点() 和 ().投影的坐标 点以和执行信息参数Row(input_control)point.y(-数组)→ (实数/整数)点的行坐标。Column(input_control)point.x(-数组)→ (实数/整数)点的列坐标。

linux_huangyu的博客 1167

【一】1D测量 Measuring——reset_fuzzy_measure()、set_fuzzy_measure()算子

reset_fuzzy_measure:重置一个模糊函数。 set_fuzzy_measure:设置一个模糊函数。

cqy阳的博客 533

halcon垂足、轮廓平行线

1.已知点与直线 求垂足 点(X,Y) 线(BeginX,BeginY,EndX,EndY) projection_pl (X, Y, BeginX, BeginY, EndX, EndX, 垂足X, 垂足Y) 2.已知一线轮廓与所求平行线之间距离 已知线轮廓:contour 已知距离:Distance gen_parallel_contour_xld(contour, parallelcontour, ‘regression_normal’, -Distance) ...

The world forgets me! 5430

Halcon中projection_pl (Operator)算子原理及应用详解

Halcon常用算子原理及应用讲解

liuming1992的博客 745
上一篇: halcon中的划痕检查实例surface_scratch
下一篇: 比较两波形的相似度
denjackson
博客等级 码龄22年 51粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值