Halcon学习之基于形状的模板匹配(一)
来源:互联网 发布:兄弟连 php 课程表 编辑:程序博客网 时间:2024/05/22 16:54
* The following example shows a production line, which carries* packages of soft cheese. The cheese packages consist of three* types of flavor: cream, ham and paprika. During quality* inspection each package is checked for its right content.* Each has to contain 4 pieces of cream cheese ('Sahne'),* 2 pieces of ham ('Schinken') and 2 pieces of paprika ('Paprika')* - any deviation is reported otherwise. To obtain the number of* each flavor, we use the shape-based matching feature. After we* define the models, we count the occurrence of the models to* get the actual number of the cheese flavors. Finally we give out* the statistics for each inspection.*dev_close_window ()dev_update_off ()read_image (Image, 'food/soft_cheese_01')dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_set_line_width (2)*** As a first step, determine the shape models for the three flavorsrgb1_to_gray (Image, GrayImage)*功能:将一个多边形存储为一个已填充区域。gen_region_polygon_filled (Paprika, [77,84,203], [306,405,347])erosion_circle (Paprika, Paprika, 3.5)PaprikaCount := 2gen_region_polygon_filled (Cream, [94,171,210], [424,488,363])erosion_circle (Cream, Cream, 3.5)CreamCount := 4gen_region_polygon_filled (Ham, [185,285,225], [496,492,367])erosion_circle (Ham, Ham, 3.5)HamCount := 2*reduce_domain (GrayImage, Paprika, ImageReduced)create_shape_model (ImageReduced, 'auto', 0, rad(360), rad(1.5), ['point_reduction_high','no_pregeneration'], 'use_polarity', [25,30], 5, ModelID1)reduce_domain (GrayImage, Cream, ImageReduced)create_shape_model (ImageReduced, 'auto', 0, rad(360), rad(1.5), ['point_reduction_high','no_pregeneration'], 'use_polarity', [25,50], 'auto', ModelID2)reduce_domain (GrayImage, Ham, ImageReduced)create_shape_model (ImageReduced, 'auto', 0, rad(360), rad(1.5), ['point_reduction_high','no_pregeneration'], 'use_polarity', [25,50], 'auto', ModelID3)*** Check for the occurrence of each cheese flavor by using the find model toolModelIDs := [ModelID1,ModelID2,ModelID3]ColorIndex := ['red','magenta','yellow']TypesIndex := ['P','C','H']*NumImages := 18for Index := 1 to NumImages by 1 AnglesTypes := [] Types := [] read_image (Image, 'food/soft_cheese_' + Index$'02') rgb1_to_gray (Image, GrayImage) threshold (GrayImage, Region, 70, 255) fill_up (Region, RegionFillUp) opening_circle (RegionFillUp, RegionOpening, 3.5) reduce_domain (GrayImage, RegionOpening, ImageReduced) shape_trans (RegionOpening, Circle, 'outer_circle') find_shape_models (ImageReduced, ModelIDs, 0, rad(360), 0.5, 8, 0.5, 'least_squares', 0, 0.8, Row, Column, Angle, Score, ModelIndex) area_center (Circle, Area, RowObj, ColumnObj) * * display found matches and all over statistics dev_clear_window () dev_display (Image) if (|Score| == 0) disp_message (WindowHandle, 'No Model found!', true, 25, 20, 'black', 'true') else CountModels := [0,0,0]//计数 for I := 0 to |Score| - 1 by 1 Types := [Types,TypesIndex[ModelIndex[I]]] dev_set_color (ColorIndex[ModelIndex[I]]) CountModels[ModelIndex[I]] := CountModels[ModelIndex[I]] + 1 get_shape_model_contours (Contour, ModelIDs[ModelIndex[I]], 1) vector_angle_to_rigid (0, 0, 0, Row[I], Column[I], Angle[I], HomMat2D) affine_trans_contour_xld (Contour, ContoursAffinTrans, HomMat2D) dev_display (ContoursAffinTrans) * * remember order of flavors *(0,0)点根据HotMat2D转换到新的坐标点,注意RowPiece与Row值相等 affine_trans_point_2d (HomMat2D, 0, 0, RowPiece, ColumnPiece) *计算两点确定的直线与水平线的夹角 angle_lx (RowObj, ColumnObj, RowPiece, ColumnPiece, AngleTyp) if (deg(AngleTyp) > 0) AnglesTypes := [AnglesTypes,deg(AngleTyp)] else AnglesTypes := [AnglesTypes,360 + deg(AngleTyp)] endif endfor *自定义函数 display_statistic (Circle, WindowHandle, CountModels, PaprikaCount, CreamCount, HamCount, AnglesTypes, Types) * endif if (Index < NumImages) disp_continue_message (WindowHandle, 'black', 'true') stop () endifendforclear_shape_model (ModelID1)clear_shape_model (ModelID2)clear_shape_model (ModelID3)
0 0
- Halcon学习之基于形状的模板匹配(一)
- Halcon中基于形状模板的匹配
- 【Halcon】基于形状的模板匹配
- Halcon中基于形状模板的匹配
- HALCON基于形状的模板匹配
- 9、halcon定位学习(1)--基于形状的匹配
- halcon 基于形状模板匹配的定位与测定
- halcon模板匹配之形状匹配法
- halcon模板匹配之形状匹配法
- halcon模板匹配之形状匹配法
- halcon模板匹配(基于形状)——笔记
- 机器视觉Halcon:颗粒计数(基于形状模板匹配)
- 基于形状的模板匹配
- Halcon 基于形状的模版匹配处理步骤
- halcon模板匹配学习(一) Matching 初印象
- 基于HALCON的模板匹配方法总结
- 基于HALCON的模板匹配方法总结
- 基于HALCON的模板匹配方法总结
- Linux进程间通信——使用命名管道
- 【Poj】-A Simple Problem with Integers(线段树,区间更新)
- 利用wireshark抓包分析
- 归纳笔记020:AVPlayer播放视频
- ubuntu安装rar
- Halcon学习之基于形状的模板匹配(一)
- ls 命令详解
- bzoj 2458: [BeiJing2011]最小三角形 分治
- 民生银行用户画像建设
- Hibernate中的几种映射关系----------多对一关联映射
- Android Studio生成keystore签名文件
- GitHub Pages 快速搭建个人主页
- unity学习笔记01--基础视图以及基本操作
- 1154 easy Sort