Commit b6e9ed4e authored by Alexey Spizhevoy's avatar Alexey Spizhevoy

fixed bug in opencv_stitching (added handling of homography evaluation failure)

parent c66ed3e0
...@@ -549,6 +549,7 @@ int main(int argc, char* argv[]) ...@@ -549,6 +549,7 @@ int main(int argc, char* argv[])
sz.width = cvRound(full_img_sizes[i].width * compose_scale); sz.width = cvRound(full_img_sizes[i].width * compose_scale);
sz.height = cvRound(full_img_sizes[i].height * compose_scale); sz.height = cvRound(full_img_sizes[i].height * compose_scale);
} }
Rect roi = warper->warpRoi(sz, static_cast<float>(cameras[i].focal), cameras[i].R); Rect roi = warper->warpRoi(sz, static_cast<float>(cameras[i].focal), cameras[i].R);
corners[i] = roi.tl(); corners[i] = roi.tl();
sizes[i] = roi.size(); sizes[i] = roi.size();
......
...@@ -465,6 +465,8 @@ void BestOf2NearestMatcher::match(const ImageFeatures &features1, const ImageFea ...@@ -465,6 +465,8 @@ void BestOf2NearestMatcher::match(const ImageFeatures &features1, const ImageFea
// Find pair-wise motion // Find pair-wise motion
matches_info.H = findHomography(src_points, dst_points, matches_info.inliers_mask, CV_RANSAC); matches_info.H = findHomography(src_points, dst_points, matches_info.inliers_mask, CV_RANSAC);
if (abs(determinant(matches_info.H)) < numeric_limits<double>::epsilon())
return;
// Find number of inliers // Find number of inliers
matches_info.num_inliers = 0; matches_info.num_inliers = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment