【備注】本文的C#代碼在下面鏈接中可以下載:Opencv的C#九點標定代碼資源-CSDN文庫
https://download.csdn.net/download/qq_34047402/90452336
一、坐標變換的介紹
1.繞原點旋轉的坐標變換
一個點(x,y)繞原點旋轉u度,其旋轉后的坐標(x1,y1)如何計算?
2.繞任意點的坐標變換
一個點(x,y)繞任意一點(x0,y0)旋轉u度,其旋轉后的坐標(x1,y1)如何計算?
3.產品實際位置與示教位置有差異,求新的旋轉中心的位置
下圖所示,機器人示教抓取產品時,旋轉中心在(x0,y0);
實際拍照后,發現產品偏移了dx,dy,du, 那么旋轉中心到什么位置可以正確的抓取到產品?
public void GetOffsetRotate(double x0,double y0, double x1,double y1, double dx,double dy, double du, out double offsetX, out double offsetY, out double offsetU)
{
//先繞(x0,y0)旋轉du度,看得到的新點坐標;
//然后把新點坐標平移到(x1+dx,y1+dy)所需的偏移量就是offsetX,offsetY.
double RotateX, RotateY;
double angle = du * Math.PI / 180.0;
RotateX = x0 + (x1 - x0) * Math.Cos(angle) - (y1 - y0) * Math.Sin(angle);
RotateY = y0 + (x1 - x0) * Math.Sin(angle) + (y1 - y0) * Math.Cos(angle);
offsetX = x1 + dx - RotateX;
offsetY = y1 + dy - RotateY;
offsetU = du;
}
4. 坐標系變換后,同一點坐標的關系
a. 僅坐標系旋轉,同一個點在兩個坐標系中的轉換關系。