我正在使用OpenCV,我的項目的一部分是3d校準,我正在使用OpenCV的cv::findChessboardCorners
功能,這很好。我的問題是我需要根據找到的棋盤部分來裁剪我的圖像。比方說,我的棋盤角的發現點(boardSize
(2 * 3)):在OpenCV中獲得投資回報
[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));
}
問題是我只得到我感興趣的區域的一個矩形。
正如你在上面看到的,藍色區域是我感興趣的區域,但紅色直腸是我得到的。我該如何解決這個問題?
我認爲他需要的平行四邊形,而不是邊框。所以他需要一個變換矩形作爲ROI。 – Zaphod