我正在使用 OpenCV,我的项目的一部分是 3d 校准,我正在使用cv::findChessboardCorners
OpenCV 的功能来做这件事,效果很好。我的问题是我需要根据找到的棋盘部分裁剪图像。假设我的棋盘角的找到点是 ( boardSize
( 2*3 )) :
[384.87457, 275.93411; 402.59073, 305.37384; 420.99899, 335.61783; 366.1167, 277.35107;
384.15289, 308.0141; 402.59592, 339.44702; 346.16739, 279.11893; 364.19324, 310.56906;
383.36844, 343.98239; 324.71078, 281.3793; 343.24969, 313.93167;362.28644, 348.54108]
这是我的代码的一部分,它给了我角落的位置:
if( (cv::findChessboardCorners(img,boardSize, imageCorners))){
cv::drawChessboardCorners(img,boardSize,imageCorners,true);
std::cout<<imageCorners[0] <<std::endl;
std::cout<<imageCorners[((boardSize.height)*(boardSize.width))-1] <<std::endl;
std::cout << imageCorners << std::endl;
cv::Rect myroi (imageCorners[0],imageCorners[((boardSize.height)*(boardSize.width))-1]);
cv::imshow("Part ", img(myroi));
}
问题是我只得到了我感兴趣的区域的一个矩形。
正如你在上面看到的,蓝色区域是我感兴趣的区域,但红色矩形是我得到的。我该如何解决这个问题?