c#结合Halcon打开摄像头拍照取出轮廓并矢量化

Halcon部分

* 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)

C#部分代码

功能描述:
1.直接从文件中选择打开图片,并将其进行轮廓提取,对其拟合矢量化,保存提取出需要的矢量化数据(如坐标点,半径等数据);我对轮廓主要进行了两种拟合,部分进行直线拟合,还有一部分进行圆弧拟合,这样可以更好的接近原图,失真达到较小。
2.还可以实现打开摄像头,进行拍照,然后就可以对拍照的图片进行上述处理:
c#代码下载连接:添加链接描述

猜你喜欢

转载自blog.csdn.net/weixin_43216599/article/details/82811971
今日推荐