dev_get_window( : : : WindowHandle)算子
时间: 2024-02-04 14:03:09 浏览: 305
dev_get_window是HALCON中用于获取当前绘图上下文句柄的算子,它可以获取当前正在操作的图像显示窗口的上下文句柄。
具体来说,dev_get_window算子可以通过以下参数进行调用:
- WindowHandle:输出的图像显示窗口句柄。
在运行该算子时,它会获取当前正在操作的图像显示窗口的上下文句柄,并将其作为输出参数返回。用户可以使用该句柄调用其他的图像处理算子,对该窗口中的图像进行操作。
需要注意的是,dev_get_window算子只能获取当前正在操作的图像显示窗口的上下文句柄。如果需要获取其他图像显示窗口的上下文句柄,需要调用其他的获取窗口句柄接口,如dev_open_window、dev_get_window_name等接口。另外,HALCON中的图像显示窗口上下文句柄可以通过调用dev_close_window接口进行释放。
相关问题
dev_update_window ('off') dev_close_window () read_image(Image, 'C:/Users/13250/Desktop/20221120-193417-973_5.jpg') get_image_size(Image, Width, Height) dev_close_window () dev_open_window(0, 0, Width, Height, 'black', WindowHandle1) dev_display(Image) rgb1_to_gray(Image, GrayImage) set_display_font(WindowHandle1, 16, 'mono', 'true', 'false') disp_continue_message(WindowHandle1, 'black', 'true') binary_threshold(GrayImage, Region, 'max_separability', 'light', UsedThreshold) smallest_rectangle1(Region, Row1, Column1, Row2, Column2) gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2) reduce_domain(GrayImage, Rectangle, ImageReduced) dev_close_window() dev_open_window(Row1, Column1, Width, Height, 'black', WindowHandle) dev_display(ImageReduced) binary_threshold(ImageReduced, Region1, 'smooth_histo', 'light', UsedThreshold1) fill_up(Region1, RegionFillUp) closing_circle(RegionFillUp, RegionClosing, Width) difference(RegionClosing, RegionFillUp, RegionDifference) dev_close_window() dev_open_window(Row1, Column1, Width, Height, 'black', WindowHandle2) dev_display(RegionDifference) dev_display(Image) area_center(RegionDifference, Area, Row, Column) if(Area>400) dev_set_color('red') dev_display(RegionDifference) set_display_font(WindowHandle2, 16, 'mono', 'true', 'false') disp_message(WindowHandle2, 'NG', 'window', Row, Column, 'yellow', 'false') else set_display_font(WindowHandle2, 16, 'mono', 'true', 'false') disp_message(WindowHandle2, 'OK', 'window', Row, Column, 'green', 'false') endif
这段代码主要实现了对一张图像进行检测和分析的操作,大致步骤如下:
1. 关闭窗口,读取一张图像,获取图像的大小,并打开一个新的窗口,将图像显示在窗口中;
2. 将RGB图像转换为灰度图像,并设置窗口字体;
3. 进行二值化操作,得到一个二值化的图像区域;
4. 在二值化图像中找到一个包含区域的最小矩形,并将其显示在窗口中;
5. 对图像进行一系列形态学操作,得到一个前景区域和一个背景区域的差异图像;
6. 计算差异区域的面积和中心位置,并根据面积大小进行判断,如果面积大于400,则在窗口中将差异区域显示为红色,并在中心位置显示“NG”,否则在窗口中将差异区域显示为绿色,并在中心位置显示“OK”。
总的来说,这段代码实现了一个简单的图像分析功能,可以用于检测图像中是否存在异常情况。
* This example shows how to use shape-based matching * in order to find a model region and use it for * further tasks. * Here, the additional task consists of reading text * within a certain region, wherefore the image has * to be aliged using the matching transformation. * * Initialization. dev_update_window ('off') dev_close_window () * Initialize visualization. read_image (ReferenceImage, 'board/board_01') get_image_size (ReferenceImage, Width, Height) initialize_visualization (Width / 2, Height / 2, WindowHandle, WindowHandleText) disp_continue_message (WindowHandle, 'black', 'true') disp_description_text (WindowHandleText) * * Define ROIs: * ROI for the shape model. dev_set_window (WindowHandle) dev_display (ReferenceImage) gen_rectangle1 (ROIModel, 60, 535, 185, 900) dev_display (ROIModel) * ROI for the text. gen_rectangle1 (ROIText, 445, 585, 590, 765) dev_display (ROIText) disp_model_message (WindowHandle) stop () * * Prepare the shape-based matching model. reduce_domain (ReferenceImage, ROIModel, ModelImage) * Create shape model and set parameters (offline step). create_generic_shape_model (ModelHandle) * Train the shape model. train_generic_shape_model (ModelImage, ModelHandle) * * Prepare the text model. create_text_model_reader ('auto', 'Industrial_0-9A-Z_Rej.omc', TextModel) * * We look for the reference transformation which we will need * for the alignment. We can extract it by finding the instance * on the reference image. * Set find parameters. set_generic_shape_model_param (ModelHandle, 'num_matches', 1) set_generic_shape_model_param (ModelHandle, 'min_score', 0.5) find_generic_shape_model (ReferenceImage, ModelHandle, MatchResultID, Matches) get_generic_shape_model_result (MatchResultID, 'all', 'hom_mat_2d', HomMat2DModel) * * Find the object in other images (online step). for i := 1 to 9 by 1 read_image (SearchImage, 'board/board_' + i$'02') find_generic_shape_model (SearchImage, ModelHandle, MatchResultID, Matches) get_generic_shape_model_result (MatchResultID, 'all', 'hom_mat_2d', HomMat2DMatch) * Compute the transformation matrix. hom_mat2d_invert (HomMat2DMatch, HomMat2DMatchInvert) hom_mat2d_compose (HomMat2DModel, HomMat2DMatchInvert, TransformationMatrix) affine_trans_image (SearchImage, ImageAffineTrans, TransformationMatrix, 'constant', 'false') * * Visualization. dev_set_window (WindowHandle) dev_display (SearchImage) get_generic_shape_model_result_object (InstanceObject, MatchResultID, 'all', 'contours') dev_display (InstanceObject) * * Reading text and numbers on the aligned image. reduce_domain (ImageAffineTrans, ROIText, ImageOCR) find_text (ImageOCR, TextModel, TextResultID) get_text_object (Characters, TextResultID, 'all_lines') get_text_result (TextResultID, 'class', RecognizedText) * * Visualization. dev_set_window (WindowHandleText) dev_display (ImageAffineTrans) dev_set_colored (12) dev_display (Characters) disp_finding_text (Characters, WindowHandle, WindowHandleText, RecognizedText) wait_seconds (0.5) endfor disp_end_of_program_message (WindowHandle, 'black', 'true') stop () dev_close_window ()
这段代码是一个示例程序,演示了如何使用基于形状匹配的方法来找到一个模型区域,并将其用于进一步的任务。在这个示例中,额外的任务是在一个固定的区域内读取文本,在这种情况下,需要使用匹配变换来对图像进行对齐。
代码的具体步骤如下:
1. 初始化程序,并展示图像。
2. 定义形状模型和文本区域的ROI。
3. 准备形状模型。
4. 创建形状模型,并训练模型。
5. 准备文本模型。
6. 查找参考图像中的实例,并提取变换矩阵。
7. 在其他图像中查找实例,并计算变换矩阵。
8. 对齐图像,并在对齐后的图像中读取文本。
9. 可视化结果。
10. 结束程序。
这段代码主要使用了HALCON库中的形状匹配和文本识别功能,通过这些功能实现了对一个模型区域的识别和定位,并在其他图像中查找并对齐该模型区域。同时,代码还使用了HALCON库中的可视化功能,将结果展示给用户。
阅读全文