Merge pull request #12670 from alalek:imgproc_getRotationMatrix2D_return_type

pull/15611/head
Alexander Alekhin 5 years ago
commit 507ca291e1
  1. 6
      modules/calib3d/src/chessboard.cpp
  2. 11
      modules/imgproc/include/opencv2/imgproc.hpp
  3. 16
      modules/imgproc/src/imgwarp.cpp

@ -282,9 +282,9 @@ void FastX::rotate(float angle,const cv::Mat &img,cv::Size size,cv::Mat &out)con
}
else
{
cv::Mat_<double> m = cv::getRotationMatrix2D(cv::Point2f(float(img.cols*0.5),float(img.rows*0.5)),float(angle/CV_PI*180),1);
m.at<double>(0,2) += 0.5*(size.width-img.cols);
m.at<double>(1,2) += 0.5*(size.height-img.rows);
cv::Matx23d m = cv::getRotationMatrix2D(cv::Point2f(float(img.cols*0.5),float(img.rows*0.5)),float(angle/CV_PI*180),1);
m(0,2) += 0.5*(size.width-img.cols);
m(1,2) += 0.5*(size.height-img.rows);
cv::warpAffine(img,out,m,size);
}
}

@ -2418,7 +2418,16 @@ coordinate origin is assumed to be the top-left corner).
@sa getAffineTransform, warpAffine, transform
*/
CV_EXPORTS_W Mat getRotationMatrix2D( Point2f center, double angle, double scale );
CV_EXPORTS_W Mat getRotationMatrix2D(Point2f center, double angle, double scale);
/** @sa getRotationMatrix2D */
CV_EXPORTS Matx23d getRotationMatrix2D_(Point2f center, double angle, double scale);
inline
Mat getRotationMatrix2D(Point2f center, double angle, double scale)
{
return Mat(getRotationMatrix2D_(center, angle, scale), true);
}
/** @brief Calculates an affine transform from three pairs of the corresponding points.

@ -3234,7 +3234,7 @@ void cv::warpPerspective( InputArray _src, OutputArray _dst, InputArray _M0,
}
cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale )
cv::Matx23d cv::getRotationMatrix2D_(Point2f center, double angle, double scale)
{
CV_INSTRUMENT_REGION();
@ -3242,16 +3242,10 @@ cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale )
double alpha = std::cos(angle)*scale;
double beta = std::sin(angle)*scale;
Mat M(2, 3, CV_64F);
double* m = M.ptr<double>();
m[0] = alpha;
m[1] = beta;
m[2] = (1-alpha)*center.x - beta*center.y;
m[3] = -beta;
m[4] = alpha;
m[5] = beta*center.x + (1-alpha)*center.y;
Matx23d M(
alpha, beta, (1-alpha)*center.x - beta*center.y,
-beta, alpha, beta*center.x + (1-alpha)*center.y
);
return M;
}

Loading…
Cancel
Save