opencv 利用仿射变换函数对图像进行任意角度旋转
来源:互联网 发布:淘宝有什么好看的衣服 编辑:程序博客网 时间:2024/06/10 02:07
任意角度旋转函数如下:
void ImgRotate(const Mat &srcImg, Mat &rotatedImg, double degree){ int h = srcImg.rows; int w = srcImg.cols; //求对角线的长度,做一个以对角线为边长的正方形图像 int diaLength = int(sqrt((h*h + w*w))); Mat tempImg = Mat::zeros(diaLength, diaLength, srcImg.type()); int tx = diaLength / 2 - w / 2;//原图左上角在新图上的x坐标 int ty = diaLength / 2 - h / 2;//原图左上角在新图上的y坐标 srcImg.copyTo(tempImg(Range(ty, ty + h), Range(tx, tx + w)));//把原图先复制到新的临时图上。 //以新的临时图的中心点为旋转点 Point rotatepoint; rotatepoint.x = rotatepoint.y = diaLength / 2; Mat rotaMat = getRotationMatrix2D(rotatepoint, degree, 1); // 获取二维旋转的仿射变换矩阵 warpAffine(tempImg, rotatedImg, rotaMat, Size(diaLength, diaLength));//进行仿射变换。 return ;}
测试代码如下
Mat roatedt; Mat t = imread("d:\\test.png", 1/*IMREAD_GRAYSCALE*/); //读取灰度图像 ImgRotate(t, roatedt, 45); //callthe rotate function namedWindow("source", 0); imshow("source", t); namedWindow("rotated", 0); imshow("rotated", roatedt);
当然这个函数还有一个问题,就是图像黑边比较多,特别是当图像旋转0,90,180等角度时,就将形成黑带了。
阅读全文
0 0
- opencv 利用仿射变换函数对图像进行任意角度旋转
- 用OpenCV的仿射变换函数warpAffine实现图像的任意角度旋转!
- opencv 中对图像旋转任意角度
- Android Jni 利用OpenCV 实现图像任意角度旋转
- opencv for python (10) 图像旋转函数+仿射变换函数+透视变换
- opencv图像旋转--矩阵旋转和仿射变换相比较
- opencv 任意角度旋转图像
- opencv 任意角度旋转图像
- opencv 任意角度旋转图像
- opencv 任意角度旋转图像
- OPENCV入门教程九:图像旋转任意角度
- OpenCv调整图像大小及仿射变换(旋转)
- opencv实现图像的旋转与仿射变换
- Android 对布局进行任意角度旋转
- 仿射变换 图像旋转
- 图像旋转任意角度
- 任意角度旋转图像
- 利用OpenCV对图像旋转
- Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案 (特别注意))
- Docker中监控Java应用程序的方法!
- A
- leetcode--1.two sum
- Git && SVN
- opencv 利用仿射变换函数对图像进行任意角度旋转
- 加载动态效果(8点圆形转)-4
- 进入子shell的各种情况分析
- java面试题之初
- 二进制除法转乘法原理
- Java值传递和引用传递基础分析
- 中国大学排名爬虫
- 清除浮动
- 【BZOJ】2006 [NOI2010]超级钢琴 ST表+堆