* Image Acquisition 01: Code generated by Image Acquisition 01
read_image (Image, 'C:/Users/ZJQ/Documents/Tencent Files/992838823/FileRecv/MobileFile/IMG_5935.PNG')
rgb1_to_gray (Image, GrayImage)
*threshold (GrayImage, Union, [0,139], [53,247])
*union1 (Union, Union)
*边缘提取
edges_sub_pix (GrayImage, Edges, 'canny', 1, 10, 20)
*将边缘分割成直线段和圆弧
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 5, 4, 2)
*分割之后的轮廓数目
count_obj (ContoursSplit, Number)
*
gen_empty_obj(lines)
gen_empty_obj (circles)
get_image_size (GrayImage, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
for i:=1 to Number by 1
*提取出其中一个边缘
select_obj(ContoursSplit,contours,i)
*得到一段轮廓的全局特征
*若-1则为直线段,若0则为椭圆弧,若1则为圆弧
get_contour_global_attrib_xld(contours,'cont_approx',Type)
if(Type=-1)
concat_obj(lines,contours,lines)
else
concat_obj(circles,contours,circles)
endif
endfor
fit_line_contour_xld (lines, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
fit_circle_contour_xld (circles, 'atukey', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
功能描述:
1.直接从文件中选择打开图片,并将其进行轮廓提取,对其拟合矢量化,保存提取出需要的矢量化数据(如坐标点,半径等数据);我对轮廓主要进行了两种拟合,部分进行直线拟合,还有一部分进行圆弧拟合,这样可以更好的接近原图,失真达到较小。
2.还可以实现打开摄像头,进行拍照,然后就可以对拍照的图片进行上述处理:
c#代码下载连接:添加链接描述