案 例 2 案例2 案例2
需求:提取遥控器上的字符区域,并求取每一个区域的面积大小以及外接矩形的长宽,并存储到txt文件中。
需求分析:可以先转换为灰度图或者颜色空间图,将遥控器区域选择出来,选择出来以后,再去求取字符区域,完成后,再对每一个区域进行面积计算。
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 150, 255)
* 开操作
opening_circle (Region, RegionOpening, 3.5)
connection (RegionOpening, ConnectedRegions)
* 选择最大面积
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
fill_up (SelectedRegions, RegionFillUp)
* 裁剪
reduce_domain (GrayImage, RegionFillUp, ImageReduced)
* mean_image (ImageReduced, ImageMean, 30, 30)
* dyn_threshold (ImageReduced, ImageMean, RegionDynThresh, 10, 'dark')
fast_threshold (ImageReduced, Region1, 0, 100, 20)
orientation_region (Region1, Phi)
area_center (Region1, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, -3.14*0.5, HomMat2D)
affine_trans_region (Region1, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
closing_circle (RegionAffineTrans, RegionClosing, 3.5)
dilation_rectangle1 (RegionClosing, RegionDilation, 1, 11)
connection (RegionDilation, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 150, 99999)
affine_trans_region (Region1, RegionAffineTrans1, HomMat2D, 'nearest_neighbor')
intersection (SelectedRegions1, RegionAffineTrans1, RegionIntersection)
sort_region (RegionIntersection, SortedRegions, 'first_point', 'true', 'row')
select_shape_std (SortedRegions, SelectedRegions2, 'max_area', 70)
* 新建txt
open_file ('test.txt', 'output', FileHandle)
fwrite_string (FileHandle, a)
fnew_line (FileHandle)
fwrite_string (FileHandle, b)
fnew_line (FileHandle)
fwrite_string (FileHandle, c)
fnew_line (FileHandle)
close_file (FileHandle)