私は OpenCV を使用しています。私のプロジェクトの一部は 3d キャリブレーションです。OpenCV のcv::findChessboardCorners
機能を使用してそれを行っていますが、うまく機能します。私の問題は、チェス盤の見つかった部分に基づいて画像をトリミングする必要があることです。私のチェス盤の角の見つかった点が ( 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));
}
問題は、関心のある領域の長方形しか得られないことです。
上記のように、青い領域は私の関心領域ですが、赤い四角形は私が得たものです。この問題を解決するにはどうすればよいですか?