用 cv::warpAffine() 可以实现。 #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; cv::Mat rotateImage(const cv::Mat &src, cv::Point2f anchor_pt, double angle) { cv::Mat rot_mat = cv::getRotationMatrix2D(anchor_pt, angle, 1.0); cv::Mat dst; cv::warpAffine(src, dst, rot_mat, src.size()); return dst; } int main( int argc, char** argv ) { cv::Mat src = cv::imread("C:/lena.bmp"); cv::Mat dst; cv::Point2f anchor_pt(src.cols / 3.0f, src.rows / 3.0f); double rot_angle = 45.0; dst = rotateImage(src, anchor_pt, rot_angle); cv::imshow("src", src); cv::imshow("dst", dst); cv::waitKey(0); return 0; }
用 cv::warpAffine() 可以实现。