OpenCV3_C++_Perspective()透视形式投影 实例
来源:互联网 发布:c语言ascii码 编辑:程序博客网 时间:2024/06/05 13:30
Opencv3 的开发环境安装和导入请看
http://blog.csdn.net/sileixinhua/article/details/71175748
所有的OpenCV3_C++实例代码请看
https://github.com/sileixinhua/OpenCV_C-_tutorials
实例
#include "stdafx.h"#include <opencv2/opencv.hpp>#pragma comment(lib,"opencv_world330.lib")//using namespace cv;//using namespace std;//去掉以上两行代码注释之后就可以不用在下面的代码中加上cv::和std:://cv::为OpenCV的函数库//std::为C++的标准函数库int Perspective(){ cv::Mat src,dst; //定义原图像和转换图像 cv::Point2f dstPoint[4]; //定义四个点为浮点型 int xMergin, yMergin; //定义图像左边点的坐标 int pattern = 1;//0,1,2 //定义透视形式一共0,1,2三种。 const char* filename = "C:\\Code\\FirstOpenCVProgramming\\lena.jpg"; //目标图像地址 cv::imread(filename).copyTo(src); if (src.empty()) { throw("Faild open file."); } //图像读取成功或者失败判定 int x0 = src.cols / 4; int x1 = (src.cols / 4) / 3; int y0 = src.rows / 4; int y1 = (src.rows / 4) / 3; cv::Point2f srcPoint[4] = { cv::Point(x0,y0), cv::Point(x0,y1), cv::Point(x1,y1), cv::Point(x1,y0), }; //定义透视点的坐标 switch (pattern) { case 0: xMergin = src.cols / 10; yMergin = src.rows / 10; dstPoint[0] = cv::Point(x0 + xMergin, y0 + yMergin); dstPoint[1] = srcPoint[1]; dstPoint[2] = srcPoint[2]; dstPoint[3] = cv::Point(x1 - xMergin, y0 + yMergin); break; case 1: xMergin = src.cols / 8; yMergin = src.rows / 8; dstPoint[0] = srcPoint[0]; dstPoint[1] = srcPoint[1]; dstPoint[2] = cv::Point(x1 - xMergin, y1 - yMergin); dstPoint[3] = cv::Point(x1 - xMergin, y0 + yMergin); break; case 2: xMergin = src.cols / 6; yMergin = src.rows / 6; dstPoint[0] = cv::Point(x0 + xMergin, y0 + yMergin); dstPoint[1] = srcPoint[1]; dstPoint[2] = cv::Point(x1 - xMergin, y1 - yMergin); dstPoint[3] = srcPoint[3]; break; } //三种图像的透视方向 cv::Mat perspectiveMmat = cv::getPerspectiveTransform(srcPoint,dstPoint); cv::warpPerspective(src,dst,perspectiveMmat,src.size(),cv::INTER_CUBIC); //图像透视化的函数 cv::imshow("src",src); cv::imshow("dst", dst); cv::imwrite("C:\\Code\\FirstOpenCVProgramming\\Perspective.jpg", dst); cv::waitKey();}int main(){ //以下的方法如果想运行,直接把前头的注释去掉即可 //运行代码的时候请改掉filename里的地址 //我的opencv是安装在C盘目录下 //一些目录地址请自行修改一下 Perspective(); //透视形式的投影 return 0;}
原图像
结果图像
阅读全文
0 0
- OpenCV3_C++_Perspective()透视形式投影 实例
- 6.5编程实例-立方体透视投影
- 透视投影
- 透视投影
- 透视投影
- 透视投影
- 透视投影
- 透视投影
- 透视投影
- 透视投影详解(Dx 透视投影推导)
- OpenGL 正交投影、透视除法、透视投影
- 透视投影与正交投影
- OpenGL透视投影gluPerspective
- [转]透视投影
- OpenGL透视投影gluPerspective
- 透视投影的推导
- 透视投影详解
- 透视投影详解
- 测试连接失败,因为初始化提供程序时发生错误
- AngularJS的请求本地的json串并显示在表单上
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- AngularJS Scope 表格
- Python基础详解
- OpenCV3_C++_Perspective()透视形式投影 实例
- codevs 1154 能量项链
- python 调用函数
- java.lang.IllegalStateException: getOutputStream() has already been called for this respons解决办法
- 计算机视觉自学笔记
- bzoj1055 [HAOI2008]玩具取名
- MySQL 遍历结果集
- Java集合框架------Set
- SCOI2010(HYSBZ1854)“游戏”