本文整理汇总了C++中MarkerDetector::enableLockedCornersMethod方法的典型用法代码示例。如果您正苦于以下问题:C++ MarkerDetector::enableLockedCornersMethod方法的具体用法?C++ MarkerDetector::enableLockedCornersMethod怎么用?C++ MarkerDetector::enableLockedCornersMethod使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MarkerDetector
的用法示例。
在下文中一共展示了MarkerDetector::enableLockedCornersMethod方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getJointPositions
void getJointPositions(Mat imgOrg, Arm *arm_left, Arm *arm_right, Chest *chest)
{
// reset found flag from all joints and both arms
arm_left->resetJ1Found();
arm_left->resetJ2Found();
arm_left->resetJ3Found();
arm_left->resetArmFound();
arm_right->resetJ1Found();
arm_right->resetJ2Found();
arm_right->resetJ3Found();
arm_right->resetArmFound();
// Create array of camera parameters
CameraParameters TheCameraParameters;
// set camera parameters
Mat dist(1,5,CV_32FC1);
dist.at<float>(0,0) = -0.0648763971625288;
dist.at<float>(0,1) = 0.0612520196884308;
dist.at<float>(0,2) = 0.0038281538281731;
dist.at<float>(0,3) = -0.00551104078371959;
dist.at<float>(0,4) = 0.000000;
Mat cameraP(3,3,CV_32FC1);
cameraP.at<float>(0,0) = 558.570339530768;
cameraP.at<float>(0,1) = 0.000000;
cameraP.at<float>(0,2) = 308.885375457296;
cameraP.at<float>(1,0) = 0.000000;
cameraP.at<float>(1,1) = 556.122943034837;
cameraP.at<float>(1,2) = 247.600724811385;
cameraP.at<float>(2,0) = 0.000000;
cameraP.at<float>(2,1) = 0.000000;
cameraP.at<float>(2,2) = 1.000000;
TheCameraParameters.setParams(cameraP, dist, CAMERA_RESOLUTION);
TheCameraParameters.resize(CAMERA_RESOLUTION);
// create vectors for joints
Vector3d j1Left, j2Left, j3Left;
Vector3d j1Right, j2Right, j3Right;
// create objects for marker
MarkerDetector MDetector;
vector<Marker> Markers;
// set marker settings
MDetector.setWarpSize(100);
MDetector.enableLockedCornersMethod(true);
MDetector.setMinMaxSize(0.01, 0.5);
// convert image to gray
Mat imgGray = imgOrg.clone();
cvtColor(imgGray, imgGray, CV_BGR2GRAY);
// detect all markers in the picture
MDetector.detect(imgGray, Markers, TheCameraParameters);
// go through all found markers
for(int i = 0; i < Markers.size(); i++)
{
Markers[i].calculateExtrinsics(0.09, TheCameraParameters);
Markers[i].draw(imgOrg, Scalar(0,0,255), 2);
// get abs position in picture for every joint
switch(Markers[i].id)
{
case SHOULDER_LEFT:
// switch x and y axis
j1Left(0) = Markers[i].Tvec.at<float>(1, 0);
j1Left(1) = Markers[i].Tvec.at<float>(0, 0);
j1Left(2) = Markers[i].Tvec.at<float>(2, 0);
arm_left->setJ1Found();
if(COUT_JOINT_ABS_POS == ON)
{
cout << "abs pos SHOULDER_LEFT: " << j1Left(0) << "\t" << j1Left(1) << "\t" << j1Left(2) << endl;
}
break;
case ELBOW_LEFT:
// switch x and y axis
j2Left(0) = Markers[i].Tvec.at<float>(1, 0);
j2Left(1) = Markers[i].Tvec.at<float>(0, 0);
j2Left(2) = Markers[i].Tvec.at<float>(2, 0);
arm_left->setJ2Found();
if(COUT_JOINT_ABS_POS == ON)
{
cout << "abs pos ELBOW_LEFT: " << j2Left(0) << "\t" << j2Left(1) << "\t" << j2Left(2) << endl;
}
break;
case WRIST_LEFT:
// switch x and y axis
j3Left(0) = Markers[i].Tvec.at<float>(1, 0);
j3Left(1) = Markers[i].Tvec.at<float>(0, 0);
j3Left(2) = Markers[i].Tvec.at<float>(2, 0);
//.........这里部分代码省略.........