Commit 507ca291 authored by Alexander Alekhin's avatar Alexander Alekhin

Merge pull request #12670 from alalek:imgproc_getRotationMatrix2D_return_type

parents bc927f97 f6ee0347
...@@ -282,9 +282,9 @@ void FastX::rotate(float angle,const cv::Mat &img,cv::Size size,cv::Mat &out)con ...@@ -282,9 +282,9 @@ void FastX::rotate(float angle,const cv::Mat &img,cv::Size size,cv::Mat &out)con
} }
else 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); cv::Matx23d 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(0,2) += 0.5*(size.width-img.cols);
m.at<double>(1,2) += 0.5*(size.height-img.rows); m(1,2) += 0.5*(size.height-img.rows);
cv::warpAffine(img,out,m,size); cv::warpAffine(img,out,m,size);
} }
} }
......
...@@ -2418,7 +2418,16 @@ coordinate origin is assumed to be the top-left corner). ...@@ -2418,7 +2418,16 @@ coordinate origin is assumed to be the top-left corner).
@sa getAffineTransform, warpAffine, transform @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. /** @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, ...@@ -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(); CV_INSTRUMENT_REGION();
...@@ -3242,16 +3242,10 @@ cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale ) ...@@ -3242,16 +3242,10 @@ cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale )
double alpha = std::cos(angle)*scale; double alpha = std::cos(angle)*scale;
double beta = std::sin(angle)*scale; double beta = std::sin(angle)*scale;
Mat M(2, 3, CV_64F); Matx23d M(
double* m = M.ptr<double>(); alpha, beta, (1-alpha)*center.x - beta*center.y,
-beta, alpha, beta*center.x + (1-alpha)*center.y
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;
return M; return M;
} }
......
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