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

Halcon 3D模型筛选操作

文章目录

    • xyz_to_object_model_3d 将图像中的 3D 点转换为 3D 物体模型
    • prepare_object_model_3d 为某一操作准备 3D 物体模型
    • select_points_object_model_3d 将阈值应用于 3D 物体模型的属性
    • volume_object_model_3d_relative_to_plane 计算三维物体模型面下相对于平面的体积
    • max_diameter_object_model_3d 计算 3D 物体模型的最大直径
    • hom_mat3d_identity 生成相同 3D 变换的同质变换矩阵
    • hom_mat3d_translate 为同质 3D 变换矩阵添加平移
    • affine_trans_object_model_3d 对 3D 物体模型应用任意仿射 3D 变换
    • set_object_model_3d_attrib_mod 给3D物体设置属性
    • get_object_model_3d_params 获取3D属性
    • 案例

xyz_to_object_model_3d 将图像中的 3D 点转换为 3D 物体模型

xyz_to_object_model_3d(X, Y, Z : : : ObjectModel3D)
### X (输入对象)
- **类型**: 单通道图像
- **描述**: 包含3D点X坐标的图像和ROI。
- **解释**:- 这个参数是一个单通道图像,包含3D点的X坐标和感兴趣区域(ROI)。通过这个图像,可以获取3D点的X坐标信息。### Y (输入对象)
- **类型**: 单通道图像
- **描述**: 包含3D点Y坐标的图像。
- **解释**:- 这个参数是一个单通道图像,包含3D点的Y坐标。通过这个图像,可以获取3D点的Y坐标信息。### Z (输入对象)
- **类型**: 单通道图像
- **描述**: 包含3D点Z坐标的图像。
- **解释**:- 这个参数是一个单通道图像,包含3D点的Z坐标。通过这个图像,可以获取3D点的Z坐标信息。### ObjectModel3D (输出控制)
- **类型**: 整数
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数,表示生成的3D对象模型的句柄。通过这个句柄,可以访问和操作生成的3D对象模型。

prepare_object_model_3d 为某一操作准备 3D 物体模型

prepare_object_model_3d( : : ObjectModel3D, Purpose, OverwriteData, GenParamName, GenParamValue : )
### ObjectModel3D (输入控制)
- **类型**: 整数数组
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示一个或多个3D对象模型的句柄。通过这些句柄,可以访问和操作这些3D对象模型。### Purpose (输入控制)
- **类型**: 字符串
- **描述**: 3D对象模型的用途。
- **默认值**: 'shape_based_matching_3d'
- **建议值**:- 'shape_based_matching_3d': 基于形状的3D匹配。- 'segmentation': 分割。- 'distance_computation': 距离计算。
- **解释**:- 这个参数指定3D对象模型的用途。不同的用途会影响数据的处理和存储方式。### OverwriteData (输入控制)
- **类型**: 字符串
- **描述**: 指定是否覆盖已存在的数据。
- **默认值**: 'true'
- **可选值**:- 'false': 不覆盖。- 'true': 覆盖。
- **解释**:- 这个参数指定是否覆盖已存在的数据。如果设置为'true',则覆盖已存在的数据;如果设置为'false',则保留已存在的数据。### GenParamName (输入控制)
- **类型**: 字符串/实数/整数数组
- **描述**: 通用参数的名称。
- **默认值**: []
- **可选值**:- 'distance_to': 距离到。- 'max_area_holes': 最大面积孔洞。- 'max_distance': 最大距离。- 'method': 方法。- 'sampling_dist_abs': 采样距离绝对值。- 'sampling_dist_rel': 采样距离相对值。
- **解释**:- 这个参数指定通用参数的名称。通过这些参数,可以进一步控制3D对象模型的处理过程。### GenParamValue (输入控制)
- **类型**: 字符串/实数/整数数组
- **描述**: 通用参数的值。
- **默认值**: []
- **建议值**:- 0, 1, 100, 'auto', 'triangles', 'points', 'primitive', 'kd-tree', 'voxel', 'linear', 0.01, 0.03
- **解释**:- 这个参数指定通用参数的值。通过这些值,可以进一步控制3D对象模型的处理过程。

select_points_object_model_3d 将阈值应用于 3D 物体模型的属性

select_points_object_model_3d( : : ObjectModel3D, Attrib, MinValue, MaxValue : ObjectModel3DThresholded)
### ObjectModel3D (输入控制)
- **类型**: 整数数组
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示一个或多个3D对象模型的句柄。通过这些句柄,可以访问和操作这些3D对象模型。### Attrib (输入控制)
- **类型**: 字符串数组
- **描述**: 应用阈值的属性。
- **默认值**: 'point_coord_z'
- **可选值**:- 'mapping_col': 映射列。- 'mapping_row': 映射行。- 'neighbor_distance': 邻居距离。- 'num_neighbors': 邻居数量。- 'num_neighbors_fast': 快速计算的邻居数量。- 'point_coord_x': 点的X坐标。- 'point_coord_y': 点的Y坐标。- 'point_coord_z': 点的Z坐标。- 'point_normal_x': 点法线的X分量。- 'point_normal_y': 点法线的Y分量。- 'point_normal_z': 点法线的Z分量。
- **解释**:- 这个参数指定应用阈值的属性。通过这些属性,可以筛选出符合条件的3D对象模型。### MinValue (输入控制)
- **类型**: 实数/整数数组
- **描述**: 属性指定的最小值。
- **默认值**: 0.5
- **解释**:- 这个参数指定属性指定的最小值。通过这个值,可以筛选出符合最小值条件的3D对象模型。### MaxValue (输入控制)
- **类型**: 实数/整数数组
- **描述**: 属性指定的最大值。
- **默认值**: 1.0
- **解释**:- 这个参数指定属性指定的最大值。通过这个值,可以筛选出符合最大值条件的3D对象模型。### ObjectModel3DThresholded (输出控制)
- **类型**: 整数数组
- **描述**: 减少的3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示减少的3D对象模型的句柄。通过这些句柄,可以访问和操作减少后的3D对象模型。

volume_object_model_3d_relative_to_plane 计算三维物体模型面下相对于平面的体积

volume_object_model_3d_relative_to_plane( : : ObjectModel3D, Plane, Mode, UseFaceOrientation : Volume)
### ObjectModel3D (输入控制)
- **类型**: 整数数组
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示一个或多个3D对象模型的句柄。通过这些句柄,可以访问和操作这些3D对象模型。### Plane (输入控制)
- **类型**: 实数/整数数组
- **描述**: 平面的姿态。
- **默认值**: [0,0,0,0,0,0,0]
- **解释**:- 这个参数是一个包含姿态的数组,表示平面的位置和方向。默认值表示平面位于原点且无旋转。### Mode (输入控制)
- **类型**: 字符串数组
- **描述**: 组合位于参考平面上方和下方体积的方法。
- **默认值**: 'signed'
- **可选值**:- 'negative': 负值。- 'positive': 正值。- 'signed': 带符号。- 'unsigned': 无符号。
- **解释**:- 这个参数指定组合位于参考平面上方和下方体积的方法。不同的方法会影响体积的计算方式。### UseFaceOrientation (输入控制)
- **类型**: 字符串数组
- **描述**: 决定面的方向是否应影响底层体积的符号。
- **默认值**: 'true'
- **可选值**:- 'false': 不使用面的方向。- 'true': 使用面的方向。
- **解释**:- 这个参数指定是否使用面的方向来影响底层体积的符号。如果设置为'true',则面的方向会影响体积的符号;如果设置为'false',则不考虑面的方向。### Volume (输出控制)
- **类型**: 实数数组
- **描述**: 计算出的体积的绝对值。
- **元素数量**: Volume 的元素数量等于 ObjectModel3D 的元素数量。
- **解释**:- 这个参数是一个实数数组,包含计算出的体积的绝对值。每个体积对应一个3D对象模型。

max_diameter_object_model_3d 计算 3D 物体模型的最大直径

max_diameter_object_model_3d( : : ObjectModel3D : Diameter)
### ObjectModel3D (输入控制)
- **类型**: 整数数组
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示一个或多个3D对象模型的句柄。通过这些句柄,可以访问和操作这些3D对象模型。### Diameter (输出控制)
- **类型**: 实数数组
- **描述**: 计算出的直径。
- **元素数量**: Diameter 的元素数量等于 ObjectModel3D 的元素数量。
- **解释**:- 这个参数是一个实数数组,包含计算出的直径。每个直径对应一个3D对象模型。

hom_mat3d_identity 生成相同 3D 变换的同质变换矩阵

hom_mat3d_identity( : : : HomMat3DIdentity)
### HomMat3DIdentity (输出控制)
- **类型**: 实数
- **描述**: 变换矩阵。
- **解释**:- 这个参数是一个4x4的齐次变换矩阵,表示一个单位变换矩阵。单位变换矩阵在三维空间中不进行任何平移、旋转或缩放操作。

hom_mat3d_translate 为同质 3D 变换矩阵添加平移

hom_mat3d_translate( : : HomMat3D, Tx, Ty, Tz : HomMat3DTranslate)
### HomMat3D (输入控制)
- **类型**: 实数
- **描述**: 输入变换矩阵。
- **解释**:- 这个参数是一个4x4的齐次变换矩阵,表示输入的变换矩阵。通过这个矩阵,可以对三维对象进行变换操作。### Tx (输入控制)
- **类型**: 实数/整数
- **描述**: 沿x轴的平移。
- **默认值**: 64
- **建议值**: 0, 16, 32, 64, 128, 256, 512, 1024
- **解释**:- 这个参数指定沿x轴的平移量。通过这个值,可以对三维对象进行x方向的平移操作。### Ty (输入控制)
- **类型**: 实数/整数
- **描述**: 沿y轴的平移。
- **默认值**: 64
- **建议值**: 0, 16, 32, 64, 128, 256, 512, 1024
- **解释**:- 这个参数指定沿y轴的平移量。通过这个值,可以对三维对象进行y方向的平移操作。### Tz (输入控制)
- **类型**: 实数/整数
- **描述**: 沿z轴的平移。
- **默认值**: 64
- **建议值**: 0, 16, 32, 64, 128, 256, 512, 1024
- **解释**:- 这个参数指定沿z轴的平移量。通过这个值,可以对三维对象进行z方向的平移操作。### HomMat3DTranslate (输出控制)
- **类型**: 实数
- **描述**: 输出变换矩阵。
- **解释**:- 这个参数是一个4x4的齐次变换矩阵,表示输出的变换矩阵。通过这个矩阵,可以对三维对象进行平移操作。

affine_trans_object_model_3d 对 3D 物体模型应用任意仿射 3D 变换

affine_trans_object_model_3d( : : ObjectModel3D, HomMat3D : ObjectModel3DAffineTrans)
### ObjectModel3D (输入控制)
- **类型**: 整数数组
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示一个或多个3D对象模型的句柄。通过这些句柄,可以访问和操作这些3D对象模型。### HomMat3D (输入控制)
- **类型**: 实数数组
- **描述**: 变换矩阵。
- **解释**:- 这个参数是一个包含变换矩阵的数组。每个变换矩阵是一个4x4的齐次变换矩阵,用于对3D对象模型进行变换操作。### ObjectModel3DAffineTrans (输出控制)
- **类型**: 整数数组
- **描述**: 变换后的3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示变换后的3D对象模型的句柄。通过这些句柄,可以访问和操作变换后的3D对象模型。

set_object_model_3d_attrib_mod 给3D物体设置属性

set_object_model_3d_attrib_mod( : : ObjectModel3D, AttribName, AttachExtAttribTo, AttribValues : )
### ObjectModel3D (输入控制)
- **类型**: 整数
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数,表示3D对象模型的句柄。通过这个句柄,可以访问和操作这个3D对象模型。### AttribName (输入控制)
- **类型**: 字符串数组
- **描述**: 属性的名称。
- **可选值**:- 'blue': 蓝色通道的值。- 'green': 绿色通道的值。- 'lines': 线条数据。- 'point_coord_x': 点的X坐标。- 'point_coord_y': 点的Y坐标。- 'point_coord_z': 点的Z坐标。- 'point_normal_x': 点法线的X分量。- 'point_normal_y': 点法线的Y分量。- 'point_normal_z': 点法线的Z分量。- 'polygons': 多边形数据。- 'red': 红色通道的值。- 'score': 分数。- 'triangles': 三角形数据。- 'xyz_mapping': XYZ映射。
- **解释**:- 这个参数指定属性的名称。通过这些名称,可以为3D对象模型添加相应的属性。### AttachExtAttribTo (输入控制)
- **类型**: 字符串
- **描述**: 定义扩展属性附加到的位置。
- **默认值**: []
- **可选值**:- 'lines': 线条。- 'object': 对象。- 'points': 点。- 'polygons': 多边形。- 'triangles': 三角形。
- **解释**:- 这个参数指定扩展属性附加到的位置。通过这个参数,可以控制属性的附加位置。### AttribValues (输入控制)
- **类型**: 实数数组
- **描述**: 属性值。
- **解释**:- 这个参数是一个包含属性值的数组。通过这些值,可以为3D对象模型添加相应的属性值。

get_object_model_3d_params 获取3D属性

get_object_model_3d_params( : : ObjectModel3D, GenParamName : GenParamValue)
### ObjectModel3D (输入控制)
- **类型**: 整数数组
- **描述**: 3D对象模型的句柄。
- **解释**:- 这个参数是一个整数数组,表示一个或多个3D对象模型的句柄。通过这些句柄,可以访问和操作这些3D对象模型。### GenParamName (输入控制)
- **类型**: 字符串数组
- **描述**: 查询的3D对象模型的通用属性的名称。
- **默认值**: 'num_points'
- **可选值**:- 'blue': 蓝色通道的值。- 'bounding_box1': 轴对齐的边界框。- 'center': 对象的中心点。- 'diameter_axis_aligned_bounding_box': 轴对齐边界框的直径。- 'extended_attribute_names': 扩展属性的名称。- 'green': 绿色通道的值。- 'has_distance_computation_data': 是否包含距离计算数据。- 'has_extended_attribute': 是否包含扩展属性。- 'has_lines': 是否包含线条。- 'has_point_normals': 是否包含点法线。- 'has_points': 是否包含点。- 'has_polygons': 是否包含多边形。- 'has_primitive_data': 是否包含原始数据。- 'has_primitive_rms': 是否包含原始数据的均方根误差。- 'has_segmentation_data': 是否包含分割数据。- 'has_shape_based_matching_3d_data': 是否包含基于形状的3D匹配数据。- 'has_surface_based_matching_data': 是否包含基于表面的匹配数据。- 'has_triangles': 是否包含三角形。- 'has_xyz_mapping': 是否包含XYZ映射。- 'lines': 线条数据。- 'mapping_col': 映射列。- 'mapping_row': 映射行。- 'neighbor_distance': 邻居距离。- 'num_extended_attribute': 扩展属性的数量。- 'num_lines': 线条的数量。- 'num_neighbors': 邻居的数量。- 'num_neighbors_fast': 快速计算的邻居数量。- 'num_points': 点的数量。- 'num_polygons': 多边形的数量。- 'num_primitive_parameter_extension': 原始参数扩展的数量。- 'num_triangles': 三角形的数量。- 'point_coord_x': 点的X坐标。- 'point_coord_y': 点的Y坐标。- 'point_coord_z': 点的Z坐标。- 'point_normal_x': 点法线的X分量。- 'point_normal_y': 点法线的Y分量。- 'point_normal_z': 点法线的Z分量。- 'polygons': 多边形数据。- 'primitive_parameter': 原始参数。- 'primitive_parameter_extension': 原始参数扩展。- 'primitive_parameter_pose': 原始参数姿态。- 'primitive_pose': 原始姿态。- 'primitive_rms': 原始数据的均方根误差。- 'primitive_type': 原始类型。- 'red': 红色通道的值。- 'reference_point': 参考点。- 'score': 分数。- 'triangles': 三角形数据。
- **解释**:- 这个参数指定要查询的3D对象模型的通用属性的名称。通过这些名称,可以获取相应的属性值。### GenParamValue (输出控制)
- **类型**: 字符串/整数/实数数组
- **描述**: 通用参数的值。
- **解释**:- 这个参数是一个数组,包含查询的通用属性的值。根据查询的属性名称,返回相应的字符串、整数或实数值。

案例

在这里插入图片描述

* ************************************************************
* This example program shows how to use the operators
* connection_object_model_3d and select_object_model_3d
* in HALCON. First, a threshold is applied to the 3D object
* model. Then, the connected components are calculated
* based on the geometric distance. Finally, the connected
* components are selected by their volume and diameter and
* the result is displayed.
* ************************************************************
* 
dev_update_off ()
dev_close_window ()
* Load X,Y,Z-Data, scale them to meter and generate a 3D object model
ImagePath := 'time_of_flight/'
read_image (Image, ImagePath + 'engine_cover_xyz_01')
* 缩放图片灰度值
scale_image (Image, Image, .001, .0)
* 缩放图像
zoom_image_factor (Image, Image, 2, 2, 'constant')
decompose3 (Image, X, Y, Z)
* 将图像中的 3D 点转换为 3D 物体模型
xyz_to_object_model_3d (X, Y, Z, ObjectModel3DID)
* Compute a mesh (Delauney triangulation) of the model
* 准备3D模型
prepare_object_model_3d (ObjectModel3DID, 'segmentation', 'true', [], [])
* 
* Prepare the visualization and display the 3D object model
* 创建位姿
create_pose (0.058, -0.165, 0.660, 345.0, 355.0, 356.0, 'Rp+T', 'gba', 'point', Pose)
* 
* Instructions for visualize_object_model_3d
Instructions[0] := 'Rotate: Left button'
Instructions[1] := 'Zoom:   Shift + left button'
Instructions[2] := 'Move:   Ctrl  + left button'
* Configuration
gen_cam_par_area_scan_division (0.01, 0, 7e-6, 7e-6, 352, 288, 710, 576, CamParam)
GenParamName := ['color','disp_pose','alpha']
GenParamValue := ['green','false',0.8]
* 
dev_open_window (0, 0, 710, 576, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
* 
visualize_object_model_3d (WindowHandle, ObjectModel3DID, CamParam, Pose, GenParamName, GenParamValue, 'This scene will be segmented into single objects', [], Instructions, Pose)
* 
* Threshold the 3D object Model
MinValue := 0.500
MaxValue := 0.670
* 筛选映射到坐标z轴上的最大最小值点
select_points_object_model_3d (ObjectModel3DID, 'point_coord_z', MinValue, MaxValue, ObjectModel3DIDReduced)
visualize_object_model_3d (WindowHandle, ObjectModel3DIDReduced, CamParam, Pose, GenParamName, GenParamValue, 'Result after thresholding at z=' + (MaxValue * 1e3)$'.3' + 'mm from the camera', [], Instructions, Pose)
* 
* Calculate the connected components and the volume and diameter
* of each of the resulting object
GenParamName[0] := 'colored'
GenParamValue[0] := 12
* 分割
connection_object_model_3d (ObjectModel3DIDReduced, 'distance_3d', 0.010, ObjectModel3DIDConnections)
* 计算3D模型的体积
volume_object_model_3d_relative_to_plane (ObjectModel3DIDConnections, [0,0,MaxValue,0,0,0,0], 'signed', 'true', Volume)
* 计算3D 模型的最大直径
max_diameter_object_model_3d (ObjectModel3DIDConnections, Diameter)
* 
* Display the results
dev_open_window (0, 720, 400, 576, 'black', WindowHandle1)
set_display_font (WindowHandle1, 14, 'mono', 'true', 'false')
Indices := [0:|ObjectModel3DIDConnections| - 1]
disp_message (WindowHandle1, ['Features of the connected components:',' ',' '], 'window', 12, 12, 'white', 'false')
ResultMessage := '  #  Max. diameter    Volume'
Sequence := [0:|ObjectModel3DIDConnections| - 1]
ResultMessage := [ResultMessage,Sequence$' 3' + '     ' + (Diameter * 1e3)$'7.1f' + ' mm  ' + (Volume * 1e3)$'7.3f' + ' dm³']
disp_message (WindowHandle1, ResultMessage, 'window', 50, 12, 'white', 'false')
dev_set_window (WindowHandle)
visualize_object_model_3d (WindowHandle, ObjectModel3DIDConnections, CamParam, Pose, GenParamName, GenParamValue, 'Found ' + |ObjectModel3DIDConnections| + ' connected components', '#' + Indices, Instructions, Pose)
* 
* Select components by their volume and maximal diameter
* 
MinVolume := 0.35e-003
MaxVolume := 1.0e-003
MinDiameter := 185.0e-003
MaxDiameter := 300.0e-003
* *** Attention:
*     select_object_model_3d uses the plane [0,0,0,0,0,0]
*     for the volume calculation! Therefore we have
*     to transform the 3d object models, so that the
*     reference plane (as defined in the former call to
*     volume_object_model_3d_relative_to_plane) coincides to the
*     default plane.
* 仿射运算
hom_mat3d_identity (HomMat3DIdentity)
hom_mat3d_translate (HomMat3DIdentity, 0, 0, -MaxValue, HomMat3DTranslation)
hom_mat3d_invert (HomMat3DTranslation, HomMat3DInvert)
affine_trans_object_model_3d (ObjectModel3DIDConnections, HomMat3DTranslation, ObjectModel3DTranslated)
* Set a label for each part
* 设置标签
for Index := 0 to |ObjectModel3DIDConnections| - 1 by 1set_object_model_3d_attrib_mod (ObjectModel3DTranslated[Index], '&Index', [], Index)
endfor
* 
* 计算仿射运算后的体积
volume_object_model_3d_relative_to_plane (ObjectModel3DTranslated, [0,0,0,0,0,0,0], 'signed', 'true', Volume1)
* 通过体积何最大直径进行筛选
select_object_model_3d (ObjectModel3DTranslated, ['volume','diameter_object'], 'and', [MinVolume,MinDiameter], [MaxVolume,MaxDiameter], ObjectModel3DSelected)
* 
Title := ['Parts selected by using the following features: ','       ' + (MinVolume * 1e3)$'3.1f' + ' dm³ <= volume <= ' + (MaxVolume * 1e3)$'3.1f' + ' dm³','and:   ' + (MinDiameter * 1e3)$'.1f' + ' mm <= max. diameter <= ' + (MaxDiameter * 1e3)$'.1f' + ' mm']
* Create the labels
Label := []
for Index := 0 to |ObjectModel3DSelected| - 1 by 1*获取参数get_object_model_3d_params (ObjectModel3DSelected[Index], '&Index', FormerIndex)Label := [Label,'#' + FormerIndex]
endfor
* 
if (|ObjectModel3DSelected| > 1)visualize_object_model_3d (WindowHandle, ObjectModel3DSelected, CamParam, [], GenParamName, GenParamValue, Title, Label, Instructions, Pose)
elseMessage := 'No object left after using the following features: 'Message[1] := '       ' + (MinVolume * 1e3)$'3.1f' + ' dm³ <= volume <= ' + (MaxVolume * 1e3)$'3.1f' + ' dm³'Message[2] := 'and:   ' + (MinDiameter * 1e3)$'.1f' + ' mm <= max. diameter <= ' + (MaxDiameter * 1e3)$'.1f' + ' mm'disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
endif
* 
* Clear the 3d object models
dev_set_window (WindowHandle1)
dev_close_window ()
clear_object_model_3d ([ObjectModel3DID,ObjectModel3DIDReduced,ObjectModel3DSelected,ObjectModel3DTranslated,ObjectModel3DIDConnections])

在这里插入图片描述


http://www.mrgr.cn/news/60738.html

相关文章:

  • 数字IC开发:布局布线
  • Django设计ORM模型步骤
  • 【Oracle实验】字段为空的,无法通过排除判断
  • nacos安装与配置
  • PostgreSQL的学习心得和知识总结(一百五十六)|auto_explain — log execution plans of slow queries
  • 怎么做网站?
  • 如何通过AI提升产品经理效率!助产品经理工作效率翻倍
  • #Js篇:Date日期梳理
  • 嵌入式C语言中VT100特殊符号实现
  • 一些MySQL的知识
  • matlab程序设计
  • Android在kts中使用navigation及Args
  • 文件属性与目录
  • 一个简单的图像分类项目(三)编写脚本:参数设置
  • Python学习-列表基本操作
  • MODSI EVI 数据的时间序列拟合一阶谐波模型
  • Pandas简介
  • 数组排序简介-插入排序(Insertion Sort)
  • 阿里巴巴运营技巧分享
  • 【c++篇】:探索c++中的std::string类--掌握字符串处理的精髓
  • Ubuntu虚拟机的安装以及相关文件配置(保姆级攻略)
  • 多个立方体盒子组成
  • HTML的总结作业
  • C++设计模式创建型模式———简单工厂模式、工厂方法模式、抽象工厂模式
  • MambaAD 5总结 分析
  • 前端必备的环境搭建