ReadImage(&ho_Image, "D:/bb/tu/6.png");
GetImageSize(ho_Image, &hv_Width, &hv_Height);
Rgb1ToGray(ho_Image, &ho_Image1);
EdgesSubPix(ho_Image1, &ho_Edges, "canny", 1, 5, 10);
//亚像素边缘
FitRectangle2ContourXld(ho_Edges, "regression", -1, 0, 0, 3, 2, &hv_Row, &hv_Column,
&hv_Phi, &hv_Length1, &hv_Length2, &hv_PointOrder);
//对轮廓进行矩形拟合--得到矩形数据
//参数1:输入轮廓
//参数2:用于拟合矩形的算法
// 'huber', 'regression', 'tukey'
//参数3:用于计算的轮廓点的最大数量
// 所有点:-1
//参数4:轮廓端点之间的最大距离被视为“闭合”
//参数5:拟合要忽略的轮廓起点和终点的点数
//参数6:最大迭代次数
//参数7:
//参数8:矩形中心的行坐标
//参数9:矩形中心的列坐标
//参数10:矩形主轴的方向(弧度)
//参数11:矩形的第一个半径(长度的一半)
//参数12:矩形的第二个半径(半宽度)
//参数13:PointOrder沿边界的点顺序( 'negative'负序, 'positive'正序)
GenRectangle2ContourXld(&ho_Rectangle, hv_Row, hv_Column, hv_Phi, hv_Length1, hv_Length2);
SetWindowAttr("background_color","black");
OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle);
HDevWindowStack::Push(hv_WindowHandle);
if (HDevWindowStack::IsOpen())
DispObj(ho_Rectangle, HDevWindowStack::GetActive());
SetWindowAttr("background_color","black");
OpenWindow(10,100,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle1);
HDevWindowStack::Push(hv_WindowHandle1);
if (HDevWindowStack::IsOpen())
DispObj(ho_Image, HDevWindowStack::GetActive());