图像变换之旋转、仿射变换、透视变换及Opencv接口介绍
1.图像平移、翻转与旋转原理
总结一下相关原理
对于实际应用,opencv提供了相应的接口函数,也可遍历图像坐标进行相应变换
2.仿射变换
原理实现:
常用矩阵:
3.透视变换
透视变换又名投影变换,其可将三维坐标投影到二维坐标系,也可同样应用在二位坐标系。
矩阵可分解为:
4.Opencv - API介绍
4.1 findHomography
Mat cv::findHomography ( InputArray srcPoints,
InputArray dstPoints,
int method = 0,
double ransacReprojThreshold = 3,
OutputArray mask = noArray(),
const int maxIters = 2000,
const double confidence = 0.995
)
Mat cv::findHomography ( InputArray srcPoints,
InputArray dstPoints,
OutputArray mask,
int method = 0,
double ransacReprojThreshold = 3
)
4.2 仿射与透视变换等总结:
//仿射变换一系列点
void cv::transform ( InputArray src,
OutputArray dst,
InputArray m
)
//仿射变换整幅图
void cv::warpAffine ( InputArray src,
OutputArray dst,
InputArray M,
Size dsize,
int flags = INTER_LINEAR,
int borderMode = BORDER_CONSTANT,
const Scalar & borderValue = Scalar()
)
//从点进行仿射矩阵
Mat cv::getAffineTransform ( const Point2f src[],
const Point2f dst[]
)
//计算仿射矩阵,获得旋转
Mat cv::getRotationMatrix2D ( Point2f center,
double angle,
double scale
)
//透视变换一系列点
void cv::perspectiveTransform ( InputArray src,
OutputArray dst,
InputArray m
)
//透视变换整幅图
void cv::warpPerspective ( InputArray src,
OutputArray dst,
InputArray M,
Size dsize,
int flags = INTER_LINEAR,
int borderMode = BORDER_CONSTANT,
const Scalar & borderValue = Scalar()
)
//填充透视变换矩阵的参数
Mat cv::getPerspectiveTransform ( InputArray src,
InputArray dst,
int solveMethod = DECOMP_LU
)
4.3 边界填充
void cv::copyMakeBorder ( InputArray src,
OutputArray dst,
int top,
int bottom,
int left,
int right,
int borderType,
const Scalar & value = Scalar()
)
Python:
cv.copyMakeBorder( src, top, bottom, left, right, borderType[, dst[, value]] ) -> dst
填充类型:
4.4 旋转与翻转镜像函数
- rotate可以实现对图像90度、180度、270度(即-90度)的旋转
rotate(Img, outImg_90, ROTATE_90_CLOCKWISE);
rotate(Img, outImg_90, ROTATE_180_CLOCKWISE);
rotate(Img, outImg_90, ROTATE_90_COUNTERCLOCKWISE);
- flip可实现对图像的上下左右翻转
CV_EXPORTS_W void flip(
InputArray src, // 输入图像
OutputArray dst, // 输出图图像
int flipCode // <0 左右上下颠倒; 0 上下颠倒;>0 左右颠倒
);
与上个仅仅是传入参数不同,一样用
参考:
1.仿射变换原理及opencv接口应用
2.透视变换应用 实例