跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量
* This example program demonstrates the basic usage of a fuzzy measure object. * Here, the task is to determine the width of and the distance between the * pins of a switch. * * First, read in the image and initialize the program. ***********************打开图像,获取图像宽度,高度*********************** read_image (Image, 'bin_switch/bin_switch_2') get_image_size (Image, Width, Height) p_reopen_window_fit (0, 0, Width, Height, 640, WindowHandle) p_set_font (WindowHandle) dev_display (Image) ************************显示图像如下:注意中间引脚反光********************** * Define the rectangular ROI within which the edges will be detected * and create the measure. Row := 290 Column := 170 Phi := rad(-130) Length1 := 60 Length2 := 10 Interpolation := 'nearest_neighbor' *************************生成测量矩形ROI,注意角度为-130度*********************
gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation, MeasureHandle) * * Determine all edge pairs that have a negative transition, i.e., edge pairs * that enclose dark regions. Sigma := 0.9 Threshold := 10 Transition := 'all' Select := 'all' **************进行测量,并显示检测结果,可以看出,中间的引脚检测结果不正确**** measure_pairs (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance) * * Visualize the results dev_display (Image) dev_set_draw ('margin') dev_set_color ('black') gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2) p_disp_dimensions (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, IntraDistance, InterDistance, Phi, Length2, WindowHandle) *
***************************放大后图像如下************************************** *******************************检测框角度为-130时,Threshold怎么变都不行,*******************************Transition改为*****negative_strongest也不行******* *****************Any question, Contact Q: 1613985351******************* ************************解决方法一:检测角度为50度时,检测结果正常********** ********解决方法二:使用FUZZY检测,已知引脚宽度为9个像素左右**************** stop () * Due to the reflections on the middle pin, its width cannot be determined correctly. * * As we know that the pins appear approximately 9 pixels wide, it is very easy to expand the measure to a * fuzzy measure that will only return pairs that have a width of approximately the given size. * * First, create a fuzzy function that returns 1.0 for the given pair size and 0.0 for values that * deviate more than 2 pixels from the given pair size. *************************创建SIZE范围函数********************************** create_funct_1d_pairs ([7,9,11], [0.0,1.0,0.0], SizeFunction) * * Then, expand the measure to a fuzzy measure that will return only pairs of approximately the given size. SetType := 'size' *************************创建测量句柄**************************************** set_fuzzy_measure (MeasureHandle, SetType, SizeFunction) * ************设为Fuzzy检测时,中间引脚找到第一条边时,再找另一条边,宽度必须在8-10之间,因此中间那条边界被忽略,刚好找的正确边缘,否则找不到**************** * Finally, determine all edge pairs that have a negative transition and approximately the given size. Sigma := 0.9 AmpThresh := 12 FuzzyThresh := 0.5 Transition := 'negative' Select := 'all' ******************************fuzzy检测,使用创建的测量句柄******************* fuzzy_measure_pairs (Image, MeasureHandle, Sigma, AmpThresh, FuzzyThresh, Transition, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, ColumnEdgeCenter, FuzzyScore, IntraDistance, InterDistance) ********************将检测结果显示出来,可以看出现在测量结果正确了************* * And again, visualize the results dev_display (Image) dev_set_draw ('margin') dev_set_color ('black') gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2) p_disp_dimensions (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, IntraDistance, InterDistance, Phi, Length2, WindowHandle) *
* Free the memory that has been allocated for the measure. close_measure (MeasureHandle)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量 - Python技术站