cv::Rect PinholeCameraModel::unrectifyRoi(const cv::Rect& roi_rect) const { assert( initialized() ); /// @todo Actually implement "best fit" as described by REP 104. // For now, just unrectify the four corners and take the bounding box. cv::Point2d raw_tl = unrectifyPoint(cv::Point2d(roi_rect.x, roi_rect.y)); cv::Point2d raw_tr = unrectifyPoint(cv::Point2d(roi_rect.x + roi_rect.width, roi_rect.y)); cv::Point2d raw_br = unrectifyPoint(cv::Point2d(roi_rect.x + roi_rect.width, roi_rect.y + roi_rect.height)); cv::Point2d raw_bl = unrectifyPoint(cv::Point2d(roi_rect.x, roi_rect.y + roi_rect.height)); cv::Point roi_tl(std::floor(std::min(raw_tl.x, raw_bl.x)), std::floor(std::min(raw_tl.y, raw_tr.y))); cv::Point roi_br(std::ceil (std::max(raw_tr.x, raw_br.x)), std::ceil (std::max(raw_bl.y, raw_br.y))); return cv::Rect(roi_tl.x, roi_tl.y, roi_br.x - roi_tl.x, roi_br.y - roi_tl.y); }
void PinholeCameraModel::unrectifyPoint(const cv::Point2d& uv_rect, cv::Point2d& uv_raw) const { uv_raw = unrectifyPoint(uv_rect); }