当前位置:网站首页>Measurement fitting based on Halcon learning [i] fuse Hdev routine
Measurement fitting based on Halcon learning [i] fuse Hdev routine
2022-07-05 07:56:00 【BoomBiuBiu】
This routine measures the width of the fuse
First step : Get photo
* Close the update of the window when the program is executing
dev_update_window ('off')
* close window
dev_close_window ()
* First step : Get photo
read_image (Fuse, 'fuse')
get_image_size (Fuse, Width, Height)
dev_open_window_fit_image (Fuse, 0, 0, Width, Height, WindowID)
set_display_font (WindowID, 12, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_display (Fuse)
set_display_font (WindowID, 12, 'mono', 'true', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
The second step : Create a measurement object
* The second step : Create a measurement object
* Appoint ROI
Row := 297
Column := 545
Length1 := 80
Length2 := 10
Angle := rad(90)
gen_rectangle2 (ROI, Row, Column, Angle, Length1, Length2)
* Generate a measurement rectangle
gen_measure_rectangle2 (Row, Column, Angle, Length1, Length2, Width, Height, 'bilinear', MeasureHandle)
dev_display (ROI)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* Extract edge pairs
measure_pairs (Fuse, MeasureHandle, 1, 1, 'negative', 'all', RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
disp_continue_message (WindowID, 'black', 'true')
stop ()
The third step : Show results
* The third step : Show results
for i := 0 to |RowEdgeFirst| - 1 by 1
* Draw two straight lines
gen_contour_polygon_xld (EdgeFirst, [-sin(Angle + rad(90)) * Length2 + RowEdgeFirst[i],-sin(Angle - rad(90)) * Length2 + RowEdgeFirst[i]], [cos(Angle + rad(90)) * Length2 + ColumnEdgeFirst[i],cos(Angle - rad(90)) * Length2 + ColumnEdgeFirst[i]])
gen_contour_polygon_xld (EdgeSecond, [-sin(Angle + rad(90)) * Length2 + RowEdgeSecond[i],-sin(Angle - rad(90)) * Length2 + RowEdgeSecond[i]], [cos(Angle + rad(90)) * Length2 + ColumnEdgeSecond[i],cos(Angle - rad(90)) * Length2 + ColumnEdgeSecond[i]])
* Set the color of the first line
dev_set_color ('cyan')
dev_display (EdgeFirst)
* Set the color of the second line
dev_set_color ('magenta')
dev_display (EdgeSecond)
dev_set_color ('blue')
* Control the position of font display
if (i == 0)
set_tposition (WindowID, RowEdgeFirst[i] + 5, ColumnEdgeFirst[i] + 20)
else
set_tposition (WindowID, RowEdgeFirst[i] - 40, ColumnEdgeFirst[i] + 20)
endif
* Display the distance on the image
write_string (WindowID, 'width: ' + IntraDistance[i] + ' pix')
endfor
disp_continue_message (WindowID, 'black', 'true')
stop ()
* Delete the measurement object
close_measure (MeasureHandle)
dev_update_window ('on')
dev_clear_window ()
Two important operators :
Generate a measurement rectangle
gen_measure_rectangle2( : : Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)Row, Column,Phi: Measure the row and column coordinates and angles of the center of the rectangle ;
Length1, Length2: Measure the width and half height of the rectangular plate ;
Width, Height: Measure the width and height of the image where the rectangle is located ;
Interpolation: Interpolation algorithm
MeasureHandle: Handle of measuring rectangle
Find with edge pairs
measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)MeasureHandle: Handle of measuring rectangle ;
Sigma: Gaussian smoothing coefficient ;
Threshold: Minimum margin amplitude ;
Transition: excessive , Light to dark ’negative’, Dark to bright ’positive’, Both ’all’
Select : If set to ’all’, All edge points are returned . If you set it to ’ first’, Then only the first of the extracted edge points is returned , Set it to ’last’ when , Return only the last .
RowEdgeFirst, ColumnEdgeFirst,AmplitudeFirst: Row and column coordinates and edge amplitude of the first edge center
RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond: Row and column coordinates and edge amplitude of the second edge center
IntraDistance: Returns the distance between two edges in the edge alignment
Distance: Returns the distance between two consecutive edge pairs
边栏推荐
- A series of problems in offline installation of automated test environment (ride)
- Gradle复合构建
- C WinForm [get file path -- traverse folder pictures] - practical exercise 6
- Rename directory in C [closed] - renaming a directory in C [closed]
- RTOS in the development of STM32 single chip microcomputer
- The sublime version that XP can run is 3114
- 软件设计师:03-数据库系统
- Scm-05 basis of independent keyboard
- C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
- Explain STM32 startup file in detail
猜你喜欢
Create inf module in AMI code
Ads usage skills
[untitled] record the visual shock of the Winter Olympics and the introduction of the display screen
Makefile application
C WinForm [display real-time time in the status bar] - practical exercise 1
UEFI development learning 6 - creation of protocol
Altium Designer 19.1.18 - 导入板框
生产中影响滑环质量的因素
如何进行导电滑环选型
C language enhancement -- pointer
随机推荐
Drive LED -- GPIO control
Global and Chinese market of peeled bourdon tubes 2022-2028: Research Report on technology, participants, trends, market size and share
Record the opening ceremony of Beijing Winter Olympics with display equipment
Global and Chinese market of resistivity meter 2022-2028: Research Report on technology, participants, trends, market size and share
RTOS in the development of STM32 single chip microcomputer
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,LU分解(LU Decomposition)源程序
UEFI development learning 2 - running ovmf in QEMU
Global and Chinese markets for anesthesia, breathing and sleep apnea devices 2022-2028: Research Report on technology, participants, trends, market size and share
研究发现,跨境电商客服系统都有这五点功能!
Use stm32cubemx tool to write the demo program of FreeRTOS
Altium designer 19.1.18 - change the transparency of copper laying
A complete set of indicators for the 10000 class clean room of electronic semiconductors
.NET服务治理之限流中间件-FireflySoft.RateLimit
万字详解八大排序 必读(代码+动图演示)
About yolov3, conduct map test directly
Process communication mode between different hosts -- socket
Consul installation
1089 Insert or Merge 含测试点5
C WinForm [display real-time time in the status bar] - practical exercise 1
Improve lighting C program