码迷,mamicode.com
首页 > 其他好文 > 详细

密集透视变换 cvWarpPerspective

时间:2014-08-14 17:04:39      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:opencv 密集透视变换 cvwarpperspective

核心函数:

cvGetPerspectiveTransform,cvWarpPerspective

步骤:

先用cvGetPerspectiveTransform(形变,拉伸,收缩,源目标图像四个点对应确定)求出变换矩阵,然后用cvWarpPerspective进行密集透视变换

程序:

bubuko.com,布布扣

代码:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int WarpPerspective(int argc,char** argv)  //warp:弯曲的   perspective:透射的
{
IplImage* src=cvLoadImage("e:\\picture\\4.jpg");
IplImage* dst=cvCreateImage(cvGetSize(src),src->depth,src->nChannels);
//定义原图像目标图像对应的四个脚的坐标
CvPoint2D32f SrcPt[4];
CvPoint2D32f DstPt[4];
SrcPt[0].x=0;             //src top left
SrcPt[0].y=0;
SrcPt[1].x=src->width-1;  //src top right
SrcPt[1].y=0;
SrcPt[2].x=0;             //src buttom left
SrcPt[2].y=src->height-1;
SrcPt[3].x=src->width-1;   //src buttom right
SrcPt[3].y=src->height-1;
DstPt[0].x=(dst->width-1)*0.1;  //dst top left
DstPt[0].y=(dst->height-1)*0.1;
DstPt[1].x=(dst->width-1)*0.85;  //dst top right
DstPt[1].y=(dst->height-1)*0.15;
DstPt[2].x=(dst->width-1)*0.2;  //dst buttom left
DstPt[2].y=(dst->height-1)*0.8;
DstPt[3].x=(dst->width-1)*0.7;  //dst buttom right
DstPt[3].y=(dst->height-1)*0.7;
CvMat* WarpMat=cvCreateMat(3,3,CV_32FC1);
cvGetPerspectiveTransform(SrcPt,DstPt,WarpMat);  //获取变换矩阵
cvWarpPerspective(src,dst,WarpMat,9,cvScalar(0,255,0));  //密集透视变换
cvNamedWindow("src");
cvNamedWindow("dst");
cvShowImage("src",src);
cvShowImage("dst",dst);
cvWaitKey(0);
cvDestroyWindow("src");
cvDestroyWindow("dst");
cvReleaseImage(&src);
cvReleaseImage(&dst);
return 0;
}


本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1539819

密集透视变换 cvWarpPerspective,布布扣,bubuko.com

密集透视变换 cvWarpPerspective

标签:opencv 密集透视变换 cvwarpperspective

原文地址:http://flyclc.blog.51cto.com/1385758/1539819

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!