密集透视变换 cvWarpPerspective

核心函数:

cvGetPerspectiveTransform,cvWarpPerspective

步骤:

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

程序:

代码:

#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;
}

密集透视变换 cvWarpPerspective

时间: 2024-10-25 02:38:51

密集透视变换 cvWarpPerspective的相关文章

第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[2] - 透视变换(cvWarpPerspective)

透视变换(单应性?)能提供更大的灵活性,但是一个透视投影并不是线性变换,因此所采用的映射矩阵是3*3,且控点变为4个,其他方面与仿射变换完全类似,下面的例程是针对密集变换,稀疏图像变换则采用cvPerspectiveTransform函数来处理. ------------------------------------------------------------------------------------------------ WarpPerspective 对图像进行透视变换 voi

OpenCV &mdash;&mdash; 图像变换

将一副图像转变成另一种表现形式 ,比如,傅里叶变换将图像转换成频谱分量   卷积 -- 变换的基础 cvFilter2D  源图像 src 和目标图像 dst 大小应该相同 注意:卷积核的系数应该是浮点类型的,必须用 CV_32F 来初始化矩阵 cvFilter2D 函数内部处理边界 -- cvCopyMakeBorder (将特定的图像轻微变大,然后以一种方式填充图像边界)   梯度和Sobel导数 sobel 算子包含任意阶的微分以及融合偏导   大核对导数有更好的逼近,小核对噪声更加敏感

常用的OpenCV函数速查

常用的OpenCV函数速查 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序暂停,等待用户触发一个按键操作: 5.cvReleaseImage:释放图像文件所分配的内存: 6.cvDestroyWindow:销毁显示图像文件的窗口: 7.cvCreateFileCapture:通过参数设置确定要读入的AVI文件: 8.cvQueryFrame:用

Opencv 函数

1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序暂停,等待用户触发一个按键操作: 5.cvReleaseImage:释放图像文件所分配的内存: 6.cvDestroyWindow:销毁显示图像文件的窗口: 7.cvCreateFileCapture:通过参数设置确定要读入的AVI文件: 8.cvQueryFrame:用来将下一帧视频文件载入内存:

OpenCV中的常用函数

1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序暂停,等待用户触发一个按键操作: 5.cvReleaseImage:释放图像文件所分配的内存: 6.cvDestroyWindow:销毁显示图像文件的窗口: 7.cvCreateFileCapture:通过参数设置确定要读入的AVI文件: 8.cvQueryFrame:用来将下一帧视频文件载入内存:

(转)OpenCV中的常用函数

1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序暂停,等待用户触发一个按键操作: 5.cvReleaseImage:释放图像文件所分配的内存: 6.cvDestroyWindow:销毁显示图像文件的窗口: 7.cvCreateFileCapture:通过参数设置确定要读入的AVI文件: 8.cvQueryFrame:用来将下一帧视频文件载入内存:

opencv函数速查笔记

A cvAbs:计算数组中所有元素的绝对值: cvAbsDiff:计算两个数组差值的绝对值: cvAbsDiffS:计算数组和标量差值的绝对值: cvAcc:可以将8位整数类型图像累加为浮点图像: cvAdaptiveThreshold:图像自适应阈值: cvAdd:两个数组的元素级的加运算: cvAddS:一个数组和一个标量的元素级的相加运算: cvAddWeighted:两个数组的元素级的加权相加运算(alpha运算): cvAnd:对两个数组进行按位与操作: cvApproxPoly:使用

OpenCv结构和内容

OpenCv的结构和内容 OpenCv源码组成结构其中包括cv, cvauex, cxcore, highgui, ml这5个模块 CV:图像处理和视觉算法 MLL:统计分类器 HighGui:GUI,图像和视频输入输出 CVCORE:包含Opencv的一些基本结构和相关函数 CVAUEX:该模块一般用于存放即将被淘汰的算法和函数,同时也包含一些新出现的实验性的函数和算法 常用OpenCv函数 1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗

图像处理和图像识别中常用的OpenCV函数

1.   cvLoadImage:将图像文件加载至内存: 2.   cvNamedWindow:在屏幕上创建一个窗口: 3.   cvDestroyWindow:销毁显示图像文件的窗口: 4.   cvDestroyAllWindows:销毁显示图像文件的所有窗口: 5.   cvShowImage:在一个已创建好的窗口中显示图像: 6.   cvWaitKey:使程序暂停,等待用户触发一个按键操作: 7.   cvReleaseImage:释放图像文件所分配的内存: 8.   cvCreate