本帖最后由 去0564 于 2026-2-6 11:24 编辑
- read_image (Image, 'C:/Users/Administrator/Desktop/腔体图像.png')
- rgb1_to_gray(Image,ImageGray)
- create_metrology_model(MetrologyHandle)
- typeName := ['min_score','measure_select','measure_transition']
- value := [0,'last', 'positive']
- value2 := [0,'first', 'negative']
- ***L1
- ROIl1 := [ 366.801, 659.756, 367.972, 525.184]
- add_metrology_object_line_measure (MetrologyHandle, ROIl1[0], ROIl1[1], ROIl1[2], ROIl1[3],\
- 50, 5, 1, 30, typeName, value, IndexL1)
- ***L2
- ROIl2 := [ 557.096, 721.389, 422.423, 721.389]
- add_metrology_object_line_measure (MetrologyHandle, ROIl2[0], ROIl2[1], ROIl2[2], ROIl2[3],\
- 10, 5, 1, 30, typeName, value, IndexL2)
- ***L3
- ROIl3 := [790.461, 586.594, 790.461, 508.831]
- add_metrology_object_line_measure (MetrologyHandle, ROIl3[0], ROIl3[1], ROIl3[2], ROIl3[3],\
- 50, 5, 1, 30, typeName, value2, IndexL3)
- ***L4
- ROIl4 := [ 636.511, 477.395, 499.116, 475.74]
- add_metrology_object_line_measure (MetrologyHandle, ROIl4[0], ROIl4[1], ROIl4[2], ROIl4[3],\
- 50, 5, 1, 30, typeName, value2, IndexL4)
- ***卡尺检测
- apply_metrology_model (Image, MetrologyHandle)
- **L1
- get_metrology_object_result (MetrologyHandle, IndexL1, 'all', 'result_type', 'all_param',LineL1)
- get_metrology_object_result_contour (ContourOutL1, MetrologyHandle, IndexL1, 'all', 1.5)
- **L2
- get_metrology_object_result (MetrologyHandle, IndexL2, 'all', 'result_type', 'all_param',LineL2)
- get_metrology_object_result_contour (ContourOutL2, MetrologyHandle, IndexL2, 'all', 1.5)
- **L3
- get_metrology_object_result (MetrologyHandle, IndexL3, 'all', 'result_type', 'all_param',LineL3)
- get_metrology_object_result_contour (ContourOutL3, MetrologyHandle, IndexL3, 'all', 1.5)
- **L4
- get_metrology_object_result (MetrologyHandle, IndexL4, 'all', 'result_type', 'all_param',LineL4)
- get_metrology_object_result_contour (ContourOutL4, MetrologyHandle, IndexL4, 'all', 1.5)
- **左上点
- intersection_lines(LineL1[0], LineL1[1], LineL1[2], LineL1[3], LineL4[0], LineL4[1], LineL4[2], LineL4[3], Rowlu, Columnlu, IsOverlapping)
- **右上点
- intersection_lines(LineL1[0], LineL1[1], LineL1[2], LineL1[3], LineL2[0], LineL2[1], LineL2[2], LineL2[3], Rowru, Columnru, IsOverlapping)
- **右下点
- intersection_lines(LineL2[0], LineL2[1], LineL2[2], LineL2[3], LineL3[0], LineL3[1], LineL3[2], LineL3[3], Rowrd, Columnrd, IsOverlapping)
- **左下点
- intersection_lines(LineL3[0], LineL3[1], LineL3[2], LineL3[3], LineL4[0], LineL4[1], LineL4[2], LineL4[3], Rowld, Columnld, IsOverlapping)
- **左中点
- lineLx := (Columnlu + Columnld)/2
- lineLy := (Rowlu + Rowld)/2
- **上中点
- lineUx := (Columnlu + Columnru)/2
- lineUy := (Rowlu + Rowru)/2
- **右中点
- lineRx := (Columnru + Columnrd)/2
- lineRy := (Rowru + Rowrd)/2
- **下中点
- lineDx := (Columnld + Columnrd)/2
- lineDy := (Rowrd + Rowld)/2
- dev_get_window (WindowHandle)
- disp_line(WindowHandle,lineLy, lineLx, lineRy, lineRx)
- disp_line(WindowHandle,lineUy, lineUx, lineDy, lineDx)
- ****中心点
- intersection_lines(lineLy, lineLx, lineRy, lineRx, lineUy, lineUx, lineDy, lineDx, CenterX,CenterY, IsOverlapping)
- angle_lx (lineUy, lineUx, lineDy, lineDx, Angle)
复制代码 卡尺求完4条直线再求中心和角度就行了
|