首页 > 电脑

check_blister例子如何用C#编程

更新时间2018-05-04 10:33:53

如何联合C#编程实现自动识别程序?

例程代码如下:

dev_close_window ()dev_update_off ()read_image (ImageOrig, 'blister/blister_reference')dev_open_window_fit_image (ImageOrig, 0, 0, -1, -1, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_set_draw ('margin')dev_set_line_width (3)* * In the first step, we create a pattern to cut out the chambers in the* subsequent blister images easily.threshold (ImageOrig, Region, 90, 255)shape_trans (Region, Blister, 'convex')orientation_region (Blister, Phi)area_center (Blister, Area1, Row, Column)vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)affine_trans_image (ImageOrig, Image2, HomMat2D, 'constant', 'false')gen_empty_obj (Chambers)for I := 0 to 4 by 1    Row := 88+I*70    for J := 0 to 2 by 1        Column := 163 + J*150        gen_rectangle2 (Rectangle, Row, Column, 0, 64, 30)        concat_obj (Chambers, Rectangle, Chambers)    endforendforaffine_trans_region (Blister, Blister, HomMat2D, 'false')difference (Blister, Chambers, Pattern)union1 (Chambers, ChambersUnion)orientation_region (Blister, PhiRef)PhiRef := rad(180)+PhiRefarea_center (Blister, Area2, RowRef, ColumnRef)* * * Each image read will be aligned to this pattern and reduced to the area of interest,* which is the chambers of the blisterCount := 6for Index := 1 to Count by 1    read_image (Image, 'blister/blister_'+Index$'02')    threshold (Image, Region, 90, 255)    connection (Region, ConnectedRegions)    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 9999999)    shape_trans (SelectedRegions, RegionTrans, 'convex')    *     * align pattern along blister of image    orientation_region (RegionTrans, Phi)    area_center (RegionTrans, Area3, Row, Column)    vector_angle_to_rigid (Row, Column, Phi, RowRef, ColumnRef, PhiRef, HomMat2D)    affine_trans_image (Image, ImageAffinTrans, HomMat2D, 'constant', 'false')    *     * segment pills    reduce_domain (ImageAffinTrans, ChambersUnion, ImageReduced)    *进行颜色分开  利用颜色进行筛选    decompose3 (ImageReduced, ImageR, ImageG, ImageB)    var_threshold (ImageB, Region, 7, 7, 0.2, 2, 'dark')    connection (Region, ConnectedRegions0)    closing_rectangle1 (ConnectedRegions0, ConnectedRegions, 3, 3)    fill_up (ConnectedRegions, RegionFillUp)    select_shape (RegionFillUp, SelectedRegions, 'area', 'and', 1000, 99999)    opening_circle (SelectedRegions, RegionOpening, 4.5)    connection (RegionOpening, ConnectedRegions)    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1000, 99999)    shape_trans (SelectedRegions, Pills, 'convex')    *     * classify segmentation results and display statistics    count_obj (Chambers, Number)    gen_empty_obj (WrongPill)    gen_empty_obj (MissingPill)    for I := 1 to Number by 1        select_obj (Chambers, Chamber, I)        intersection (Chamber, Pills, Pill)        area_center (Pill, Area, Row1, Column1)        if (Area > 0)            min_max_gray (Pill, ImageB, 0, Min, Max, Range)            if (Area<3800 or Min < 60)                concat_obj (WrongPill, Pill, WrongPill)            endif        else            concat_obj (MissingPill, Chamber, MissingPill)        endif    endfor    *     dev_clear_window ()    dev_display (ImageAffinTrans)    dev_set_color ('forest green')    count_obj (Pills, NumberP)    count_obj (WrongPill, NumberWP)    count_obj (MissingPill, NumberMP)    dev_display (Pills)    if (NumberMP > 0 or NumberWP > 0)        disp_message (WindowHandle, 'Not OK', 'window', 10, 10+600, 'red', 'true')    else        disp_message (WindowHandle, 'OK', 'window', 10, 10+600, 'forest green', 'true')    endif    disp_message (WindowHandle, '# correct pills: ' + (NumberP - NumberWP), 'window', 10, 10, 'black', 'true')    disp_message (WindowHandle, '# wrong pills  :  ' + NumberWP, 'window', 10+25, 10, 'black', 'true')    if (NumberWP>0)        disp_message (WindowHandle, NumberWP, 'window', 10+25, 10+180, 'red', 'true')    endif    disp_message (WindowHandle, '# missing pills:  ' + NumberMP, 'window', 10+50, 10, 'black', 'true')    if (NumberMP > 0)        disp_message (WindowHandle, NumberMP, 'window', 10+50, 10+180, 'red', 'true')    endif    dev_set_color ('red')    dev_display (WrongPill)    dev_display (MissingPill)    if (Index < Count)        disp_continue_message (WindowHandle, 'black', 'true')    endif    stop ()endfor


上一篇:appinventor中云数据库的作用

下一篇:matlab灰度图检测峰值坐标(很多个峰值)