这听起来很简单,但我遇到了很多问题。
通过霍夫变换,我想我可以从图像中得到 ROI。但由于我们的 3D 世界和我不完美的手部协调,ROI 是倾斜的,或者有透视投影——也就是说,它不是一个真正的矩形,无法进一步分析。
有没有办法解决这个问题?
这听起来很简单,但我遇到了很多问题。
通过霍夫变换,我想我可以从图像中得到 ROI。但由于我们的 3D 世界和我不完美的手部协调,ROI 是倾斜的,或者有透视投影——也就是说,它不是一个真正的矩形,无法进一步分析。
有没有办法解决这个问题?
您可以使用getPerspectiveTransform()
andwarpPerspective()
再次将其变为矩形。
//cornerpoints contains the Point2f corners you detected in the image in clockwise ordering from top left
int rectheight=480;
int rectwidth=640;
Point2f rectpoints[4];
rectpoints[0]=Point2f(0,0);
rectpoints[1]=Point2f(0,rectwidth);
rectpoints[2]=Point2f(rectheight,rectwidth);
rectpoints[3]=Point2f(rectheight,0);
Mat pt=getPerspectiveTransform(cornerpoints,rectpoints);
Mat rectangle(rectheight,rectwidth,CV_8U);
warpPerspective(image,rectangle,pt,Size(rectheight,rectwidth));
您是否考虑过使用 Gonzalez 在他的书中提出的形状签名?如果您的形状已经被分割和标记,那么计算起来既简单又快速。