Opencv 3仿射变换之缩放 平移 旋转 倾斜 反射 透视
来源:互联网 发布:python开发入门详解 编辑:程序博客网 时间:2024/06/07 22:17
仿射变换涉及大量的关于矩阵的运算,这里就不在过多讲解了,关于矩阵参考如下:
http://blog.csdn.net/myan/article/details/647511https://www.zhihu.com/question/19919917/answer/270694029?utm_source=qq&utm_medium=social仿射变换的概念:很通俗易懂
https://www.zhihu.com/question/20666664//仿射变换 缩放 平移 旋转 倾斜 反射 透视
#include<iostream>#include<opencv2\opencv.hpp>using namespace std;using namespace cv;int main(void){Mat src = imread("C:/Users/11741/Desktop/image/high.jpg"); //原图if (!src.data)return -1;cout << "1.缩放" << endl;cout << "2.平移" << endl;cout << "3.旋转" << endl;cout << "4.倾斜" << endl;cout << "5.反射" << endl;cout << "6.透视" << endl;int num;while (1){cin >> num;switch (num){case 1:{Mat dst;resize(src, dst, Size(0, 0), 0.5, 0.5, 1); //参数一:原图;参数二:目标图;如果参数三为0,则按参数四计算,参数四为缩放因子;参数三为缩放大小imshow("src", src); //显示原图imshow("dst", dst); //显示目标图waitKey(0);break;}case 2:{Mat dst;Mat M = (Mat_<double>(2, 3) << 1, 0, 200, 0, 1, 150); //构建平移矩阵,表示x方向平移200,y方向平移150warpAffine(src, dst, M, src.size()); //进行仿射变换,参数三为变换的矩阵,参数四:目标图大小imshow("src", src);imshow("dst", dst);waitKey(0);break;}case 3:{ Mat dst;Mat M = getRotationMatrix2D(Point2f(0,src.rows), 40, 1); //获取变换矩阵,参数一:旋转中心;参数二:角度(逆时针);参数三:缩放因子warpAffine(src, dst, M, src.size()); //进行仿射变换imshow("src", src);imshow("dst", dst);waitKey(0);break;}case 4:{Mat dst; Point2f srcTriangle[3]; //目标图和源图像设置三组点计算仿射变换Point2f dstTriangle[3]; srcTriangle[0] = Point2f(0, 0);srcTriangle[1] = Point2f(src.cols - 1, 0);srcTriangle[2] = Point2f(0, src.rows - 1);dstTriangle[0] = Point2f(0, src.rows*0.33);dstTriangle[1] = Point2f(src.cols*0.65, src.rows*0.35);dstTriangle[2] = Point2f(src.cols*0.15, src.rows*0.6);Mat M = getAffineTransform(srcTriangle, dstTriangle); //获取变换矩阵warpAffine(src, dst, M, src.size());imshow("src", src);imshow("dst", dst);waitKey(0);break;}case 5:{Mat dst;Mat Mh = (Mat_<double>(2, 3) << -1, 0, src.cols, 0, 1, 0); //水平Mat Mv = (Mat_<double>(2, 3) << 1, 0, 0, 0, -1, src.rows); //垂直Mat M = (Mat_<double>(2, 3) << -1, 0, src.cols, 0, -1, src.rows); //水平+垂直warpAffine(src, dst, Mh, src.size()); imshow("src", src);imshow("dst", dst);waitKey(0);break;}case 6:{Mat dst;Point2f srcMar[4];Point2f dstMar[4]; //目标图与原图设置四组点srcMar[0] = Point(0, 0);srcMar[1] = Point(src.cols - 1, 0);srcMar[2] = Point(0, src.rows - 1);srcMar[3] = Point(src.cols - 1, src.rows - 1);dstMar[0] = Point(src.cols*0.4, src.rows*0.3);dstMar[1] = Point(src.cols*0.7,src.rows*0.1);dstMar[2] = Point(src.cols*0.1, src.rows*0.8);dstMar[3] = Point(src.cols*0.8, src.rows*0.9);Mat M = getPerspectiveTransform(srcMar, dstMar); //获取透视矩阵warpPerspective(src, dst, M, src.size());imshow("src", src);imshow("dst", dst);waitKey(0);break;} default:return 0;break;}}waitKey(0);return 0;}
阅读全文
0 0
- Opencv 3仿射变换之缩放 平移 旋转 倾斜 反射 透视
- OpenCV之仿射变换:平移、缩放、旋转
- Python-OpenCv之图像基本处理-平移,缩放,旋转,翻转,裁剪及仿射变换
- view仿射变换 缩放 旋转 平移
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移
- 图像基本变换--- 平移、旋转、缩放、仿射变换、镜像
- 【OpenCV】仿射变换:坐标计算 旋转 缩放
- OpenCV—仿射变换warpAffine--旋转和缩放
- opencv仿射变换与透视变换
- opencv仿射变换与透视变换
- opencv仿射变换、透视变换
- opencv之仿射与透视变换总结
- 图像处理中的旋转、平移、缩放——仿射变换的原理和优化
- opencv for python (10) 图像旋转函数+仿射变换函数+透视变换
- CSS3 2D平移,旋转,缩放,倾斜
- WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示
- OpenCV图像变换(仿射变换与透视变换)
- 2017年12月技术总结
- redis服务器搭建及CI中的使用方法
- HBuilder打包App方法
- (转)解析bind1st和bind2nd的使用
- Mysql修改密码
- Opencv 3仿射变换之缩放 平移 旋转 倾斜 反射 透视
- ardupilot的Bootloader编译下载过程
- js无法获取style样式的问题解析与解决方法
- ios-通过Reachability监听网络状态
- fopen、fread、fwrite、fclose函数_C语言学习内容总结2017/12/5
- Agilent Model Builder Program(MBP)2016.01 CHS Win64 1CD
- Geth搭建以太坊私链环境
- 显卡、GPU和CUDA简介
- 在CentOS 7下更改yum源与更新系统。