opencv图像映射
2016-05-07 22:31
337 查看
测试环境:
win8 64
vs2008
opencv2.4.2
=================================================
参考http://www.learnopencv.com/homography-examples-using-opencv-python-c/
程序运行效果图:
----------------------------------------------------------------------------------------------------------
opencv函数调用很简单,需要人工选着映射图上和对应图像的四个点。也可以使用opencv提供的sift特征点来匹配查找。
将两张图像看成两个矩阵M1,M2,我们要寻找M2=M1*H中的H,这是两张图像的映射关系。
用findHomography找到H
用warpPerspective完成投影输出结果。
(明天母亲节,祝所有妈妈身体健康!)
win8 64
vs2008
opencv2.4.2
=================================================
参考http://www.learnopencv.com/homography-examples-using-opencv-python-c/
#include "stdafx.h" #include "opencv2/opencv.hpp" #pragma comment(lib,"opencv_core242d.lib") #pragma comment(lib,"opencv_imgproc242d.lib") #pragma comment(lib,"opencv_highgui242d.lib") #pragma comment(lib,"opencv_calib3d242d.lib") using namespace cv; using namespace std; int main( int argc, char** argv) { //投影图 Mat im_src = imread("D:\\SDK\\opencv2.4.2\\opencv\\samples\\c\\baboon200_rotated.jpg"); vector<Point2f> pts_src; pts_src.push_back(Point2f(66 , 58)); pts_src.push_back(Point2f(118 , 40)); pts_src.push_back(Point2f(96 , 174)); pts_src.push_back(Point2f(135 , 165)); //目标图像 Mat im_dst = imread("D:\\SDK\\opencv2.4.2\\opencv\\samples\\c\\baboon.jpg"); vector<Point2f> pts_dst; pts_dst.push_back(Point2f(178 , 59)); pts_dst.push_back(Point2f(335 , 56)); pts_dst.push_back(Point2f(186 , 371)); pts_dst.push_back(Point2f(297 , 376)); //对比点连线图 Mat im_all = Mat::zeros(im_dst.rows,im_src.cols+im_dst.cols,CV_8UC3); im_src.copyTo(im_all(Rect(0,0,im_src.cols,im_src.rows))); im_dst.copyTo(im_all(Rect(im_src.cols,0,im_dst.cols,im_dst.rows))); for (int i = 0;i<4;i++) { line(im_all,pts_src[i],Point2f(pts_dst[i].x+im_src.cols,pts_dst[i].y),Scalar(0,255,0)); } //寻找映射矩阵 Mat h = findHomography(pts_src, pts_dst); Mat im_out; //投影 warpPerspective(im_src, im_out, h, im_dst.size()); imshow("Source Image", im_all); imshow("Warped Source Image", im_out); waitKey(0); }
程序运行效果图:
----------------------------------------------------------------------------------------------------------
opencv函数调用很简单,需要人工选着映射图上和对应图像的四个点。也可以使用opencv提供的sift特征点来匹配查找。
将两张图像看成两个矩阵M1,M2,我们要寻找M2=M1*H中的H,这是两张图像的映射关系。
用findHomography找到H
用warpPerspective完成投影输出结果。
(明天母亲节,祝所有妈妈身体健康!)
相关文章推荐
- 20150306+Linux安装+常用命令-02
- 20150306+Linux安装+常用命令-01
- 百万用户级游戏服务器架构设计(二)
- Opencv3.1+Ubuntu15.10
- /var/log目录下的20个Linux日志文件功能详解
- scanf()函数键盘缓冲区残余信息的问题!!!
- linux下exit()和_exit()区别
- Apache Flink源码解析之stream-sink
- centos 7 安装无线网卡rtl8188EUS_rtl8189ES驱动
- nginx-rtmp-module安装笔记
- Linux入门之入手开发板与开发环境的搭建 2016.5.7
- linux jenkins安装(四)
- opencv3.0 FaceRecongnizer说明
- 百万用户级游戏服务器架构设计(一)
- 杂谈嵌入式linux和单片机开发
- 用到的网站(持续更新)
- linux maven安装(三)
- (OK) Fedora 23——CORE——docker——(5)——> install-core
- (OK) Fedora 23——CORE——docker——(4)——> iptables_core.sh
- (OK) Fedora 23——CORE——docker——(3)——> install-docker