Skip to content

Commit 883b995

Browse files
committed
Merge pull request opencv#18012 from sturkmen72:update_doc_and_sample
2 parents a285339 + c262eea commit 883b995

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

modules/imgproc/include/opencv2/imgproc.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2263,7 +2263,7 @@ CV_EXPORTS_W void warpAffine( InputArray src, OutputArray dst,
22632263
const Scalar& borderValue = Scalar());
22642264

22652265
/** @example samples/cpp/warpPerspective_demo.cpp
2266-
An example program shows using cv::findHomography and cv::warpPerspective for image warping
2266+
An example program shows using cv::getPerspectiveTransform and cv::warpPerspective for image warping
22672267
*/
22682268

22692269
/** @brief Applies a perspective transformation to an image.

samples/cpp/warpPerspective_demo.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include "opencv2/imgproc.hpp"
99
#include "opencv2/imgcodecs.hpp"
1010
#include "opencv2/highgui.hpp"
11-
#include "opencv2/calib3d.hpp"
1211
#include <iostream>
1312

1413
using namespace std;
@@ -36,6 +35,7 @@ Mat warping(Mat image, Size warped_image_size, vector< Point2f> srcPoints, vecto
3635
String windowTitle = "Perspective Transformation Demo";
3736
String labels[4] = { "TL","TR","BR","BL" };
3837
vector< Point2f> roi_corners;
38+
vector< Point2f> midpoints(4);
3939
vector< Point2f> dst_corners(4);
4040
int roiIndex = 0;
4141
bool dragging;
@@ -99,21 +99,26 @@ int main(int argc, char** argv)
9999

100100
imshow( windowTitle, image );
101101

102+
midpoints[0] = (roi_corners[0] + roi_corners[1]) / 2;
103+
midpoints[1] = (roi_corners[1] + roi_corners[2]) / 2;
104+
midpoints[2] = (roi_corners[2] + roi_corners[3]) / 2;
105+
midpoints[3] = (roi_corners[3] + roi_corners[0]) / 2;
106+
102107
dst_corners[0].x = 0;
103108
dst_corners[0].y = 0;
104-
dst_corners[1].x = (float)std::max(norm(roi_corners[0] - roi_corners[1]), norm(roi_corners[2] - roi_corners[3]));
109+
dst_corners[1].x = (float)norm(midpoints[1] - midpoints[3]);
105110
dst_corners[1].y = 0;
106-
dst_corners[2].x = (float)std::max(norm(roi_corners[0] - roi_corners[1]), norm(roi_corners[2] - roi_corners[3]));
107-
dst_corners[2].y = (float)std::max(norm(roi_corners[1] - roi_corners[2]), norm(roi_corners[3] - roi_corners[0]));
111+
dst_corners[2].x = dst_corners[1].x;
112+
dst_corners[2].y = (float)norm(midpoints[0] - midpoints[2]);
108113
dst_corners[3].x = 0;
109-
dst_corners[3].y = (float)std::max(norm(roi_corners[1] - roi_corners[2]), norm(roi_corners[3] - roi_corners[0]));
114+
dst_corners[3].y = dst_corners[2].y;
110115

111116
Size warped_image_size = Size(cvRound(dst_corners[2].x), cvRound(dst_corners[2].y));
112117

113-
Mat H = findHomography(roi_corners, dst_corners); //get homography
118+
Mat M = getPerspectiveTransform(roi_corners, dst_corners);
114119

115120
Mat warped_image;
116-
warpPerspective(original_image, warped_image, H, warped_image_size); // do perspective transformation
121+
warpPerspective(original_image, warped_image, M, warped_image_size); // do perspective transformation
117122

118123
imshow("Warped Image", warped_image);
119124
}

0 commit comments

Comments
 (0)