网页游戏网站快手,aspx 网站开发工具,个人网站建设 免费,加工制造网并行运算#xff08;提升检测时间#xff09;
支持主线程中的子线程并行执行程序和调用算子。 一旦启动#xff0c;子线程由线程 ID 标识#xff0c;该线程 ID 是一个取决于操作系统的整数进程号。 子线程的执行独立于它们启动的线程。 因此#xff0c;无法预测子线程执行…并行运算提升检测时间
支持主线程中的子线程并行执行程序和调用算子。 一旦启动子线程由线程 ID 标识该线程 ID 是一个取决于操作系统的整数进程号。 子线程的执行独立于它们启动的线程。 因此无法预测子线程执行结束确切时间点。 如果要访问一组线程返回的数据则需要显式等待相应的线程完成。
HDevelop 默认将线程数限制为 20。 如果需要可以在首选项中修改此数字。 完全限制并发线程数的主要原因是为了防止用户由于编程错误而无意中生成大量线程。 在这种情况下系统负载和内存消耗可能会增长得如此之高以至于可能会变得无响应。 启动线程 par_startUserThreadID : 算子/方法
par_start 不是实际的算子而只是修改调用行为的限定符。 因此无法在操作员窗口中选择 par_start。如果启动新的子线程会超过配置的最大线程数则会引发异常。
等待子线程结束 par_join (UserThreadID)
实例
count_seconds(t0)
read_image (Image880720666518444692, E:/图片/880720666518444692.jpg)
rgb1_to_gray(Image880720666518444692, GrayImage)
get_image_size(GrayImage, Width, Height)
count_seconds(t1)
*-------------生成区域参数配置
l1:305.789
l2:237.636
*----左上卡尺
ROI_up_l_r:1869.6
ROI_up_l_c:2894.94
ROI_up_l_a:rad(-0)
par_startThreadID : C_L_U (GrayImage, Cross_c_l_up, ROI_up_l_r, ROI_up_l_c, ROI_up_l_a, l1, l2, Width, Height, MeasureHandle, RowEdge_c_l_up, ColumnEdge_c_l_up, Amplitude, Distance)*-----左下卡尺
par_startThreadID1 : C_L_D (GrayImage, Cross_c_l_down, l1, l2, Width, Height, ROI_down_l_r, ROI_down_l_c, ROI_down_l_a, MeasureHandle1, RowEdge_c_l_down, ColumnEdge_c_l_down, Amplitude1, Distance1)*-----右下卡尺
par_startThreadID2 : C_R_D (GrayImage, Cross_c_r_down, l1, l2, Width, Height, ROI_down_r_r, ROI_down_r_c, ROI_down_r_a, MeasureHandle2, RowEdge_c_r_down, ColumnEdge_c_r_down, Amplitude2, Distance2)*------右上卡尺
par_startThreadID3 : C_R_U (GrayImage, Cross_c_r_up, l1, l2, Width, Height, ROI_up_r_r, ROI_up_r_c, ROI_up_r_a, MeasureHandle3, RowEdge_c_r_up, ColumnEdge_c_r_up, Amplitude3, Distance3)
*--------找上方直线
*--------上直线由下到上检测
par_startThreadID4 : L_UP (GrayImage, Contours2, Contour3, Contour_line_up, Width, Height, linepr_up, MetrologyHandle, Index, Row2, Column2, RowBegin_line_up, ColBegin_line_up, RowEnd_line_up, ColEnd_line_up, Nr, Nc, Dist)
*-------------找下方直线
*--------下直线由上到下检测
par_startThreadID5 : L_DOWN (GrayImage, Contours4, Contour5, Contour_line_down, Width, Height, linepr_down, MetrologyHandle1, Index1, Row3, Column3, RowBegin_line_down, ColBegin_line_down, RowEnd_line_down, ColEnd_line_down, Nr1, Nc1, Dist1)
par_join([ThreadID,ThreadID1,ThreadID2,ThreadID3,ThreadID4,ThreadID5])
count_seconds(t2)
detectiontime1:t2-t1
dev_set_color(green)
dev_display (GrayImage)
dev_display (Contour5)
dev_display (Contour3)
dev_display (Cross_c_l_up)
dev_display (Cross_c_l_down)
dev_display (Cross_c_r_up)
dev_display (Cross_c_r_down)
dev_get_window (WindowHandle)
set_tposition(WindowHandle, 1000, 1000)
write_string(WindowHandle, 检测时间detectiontime1)stop ()无并行运算时间对比
dev_clear_window ()
dev_display (GrayImage)count_seconds(t3)
ROI_up_l_r:1869.6
ROI_up_l_c:2894.94
ROI_up_l_a:rad(-0)
gen_measure_rectangle2(ROI_up_l_r, ROI_up_l_c, ROI_up_l_a, l1, l2, Width, Height, nearest_neighbor, MeasureHandle)
measure_pos(GrayImage,MeasureHandle, 1, 30, positive, first, RowEdge_c_l_up, ColumnEdge_c_l_up, Amplitude, Distance)
gen_cross_contour_xld(Cross_c_l_up, RowEdge_c_l_up, ColumnEdge_c_l_up, 600, 0.785398)
ROI_down_l_r:9838.89
ROI_down_l_c:2894.94
ROI_down_l_a:rad(-0)
gen_measure_rectangle2(ROI_down_l_r, ROI_down_l_c,ROI_down_l_a, l1, l2, Width, Height, nearest_neighbor, MeasureHandle1)
measure_pos(GrayImage, MeasureHandle1, 1, 30, positive, first, RowEdge_c_l_down, ColumnEdge_c_l_down, Amplitude1, Distance1)
gen_cross_contour_xld(Cross_c_l_down, RowEdge_c_l_down, ColumnEdge_c_l_down, 600, 0.785398)
ROI_down_r_r:9838.89
ROI_down_r_c:5774.45
ROI_down_r_a:rad(-178.8)
gen_measure_rectangle2(ROI_down_r_r, ROI_down_r_c, ROI_down_r_a,l1, l2, Width, Height, nearest_neighbor, MeasureHandle2)
measure_pos(GrayImage, MeasureHandle2, 1, 30, positive, first, RowEdge_c_r_down, ColumnEdge_c_r_down, Amplitude2, Distance2)
gen_cross_contour_xld(Cross_c_r_down, RowEdge_c_r_down, ColumnEdge_c_r_down, 600, 0.785398)
ROI_up_r_r:1869.6
ROI_up_r_c:5774.45
ROI_up_r_a:rad(-178.8)
gen_measure_rectangle2(ROI_up_r_r, ROI_up_r_c,ROI_up_r_a, l1, l2, Width, Height, nearest_neighbor, MeasureHandle3)
measure_pos(GrayImage, MeasureHandle3, 1, 30, positive, first, RowEdge_c_r_up, ColumnEdge_c_r_up, Amplitude3, Distance3)
gen_cross_contour_xld(Cross_c_r_up, RowEdge_c_r_up, ColumnEdge_c_r_up, 600, 0.785398)
linepr_up:[1423.49,5063.6 ,1428.49, 3444.44]
create_metrology_model(MetrologyHandle)
set_metrology_model_image_size(MetrologyHandle, Width, Height)
add_metrology_object_generic(MetrologyHandle, line, linepr_up, 100, 20, 1, 20, [], [], Index)
set_metrology_object_param(MetrologyHandle, all, measure_transition, positive)
set_metrology_object_param(MetrologyHandle, all, measure_select, first)
apply_metrology_model(GrayImage, MetrologyHandle)
get_metrology_object_measures(Contours2, MetrologyHandle, all, all, Row2, Column2)
gen_contour_polygon_xld(Contour3, Row2, Column2)
fit_line_contour_xld(Contour3, tukey, -1, 0, 5, 2, RowBegin_line_up, ColBegin_line_up, RowEnd_line_up, ColEnd_line_up, Nr, Nc, Dist)
gen_contour_polygon_xld(Contour_line_up, [RowBegin_line_up,RowEnd_line_up], [ColBegin_line_up, ColEnd_line_up])
linepr_down:[10587.2, 3495.74,10598.2, 5276.52]
create_metrology_model(MetrologyHandle1)
set_metrology_model_image_size(MetrologyHandle1, Width, Height)
add_metrology_object_generic(MetrologyHandle1, line, linepr_down, 100, 20, 1, 30, [], [], Index1)
set_metrology_object_param(MetrologyHandle1, all, measure_transition, positive)
set_metrology_object_param(MetrologyHandle1, all, measure_select, first)
apply_metrology_model(GrayImage, MetrologyHandle1)
get_metrology_object_measures(Contours4, MetrologyHandle1, all, all, Row3, Column3)
gen_contour_polygon_xld(Contour5, Row3, Column3)
fit_line_contour_xld(Contour5, tukey, -1, 0, 5, 2, RowBegin_line_down, ColBegin_line_down, RowEnd_line_down, ColEnd_line_down, Nr1, Nc1, Dist1)
gen_contour_polygon_xld(Contour_line_down, [RowBegin_line_down,RowEnd_line_down], [ColBegin_line_down,ColEnd_line_down])
count_seconds(t4)detectiontime2:t4-t3
dev_set_color(red)
dev_display (GrayImage)
dev_display (Contour5)
dev_display (Contour3)
dev_display (Cross_c_l_up)
dev_display (Cross_c_l_down)
dev_display (Cross_c_r_up)
dev_display (Cross_c_r_down)
set_tposition(WindowHandle, 1300, 1000)
write_string(WindowHandle, 检测时间detectiontime2)