opencv学习之几何变换

opencv学习之几何变换

1.仿射变换

  1. 缩放
void resize( InputArray src,
			 OutputArray dst,
			 Size dsize,
			 double fx=0,
			 double fy=0,
			 int interpolation=INTER_LINEAR)
//如果dsize!=0,那么缩放因子参数fx,fy均为0,并且根据dsize和输入图像的原始尺寸来计算fx和fy
//如果fx和fy位非零值,则dsize=0,那么将根据其他的参数来计算dsize的值。

一个缩放操作可以由其变换矩阵表示为:
S = [ S x 0 0 S y ] S=\begin{bmatrix} S_x & 0 \\ 0 & S_y \end{bmatrix} S=[Sx00Sy]
Sx和Sy分别是x轴和y轴的尺度因子。
示例代码:

#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char **argv)
{
	//读取源文件
	Mat src;
	src = imread("../test_size.jpg");
	//应用尺度
	Mat dst;
	resize(src, dst, Size(0, 0), 0.5, 0.5);

	//显示结果
	imshow("Original image", src);
	imshow("Scaled image", dst);

	waitKey();
	return 0;
}
  1. 平移
void warpAffine(InputArray src, 
				OutputArray dst,
				InputArray M,//参数M是将src装换为dst的变换矩阵;
				Size dsize,
				int flags=INTER_LINEAR, //指定内插法
				int borderMode=BORDER_CONSTANT,
				const Scalar& borderValue=Scalar())

代码示例:

#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char **argv)
{
	//读取源文件
	Mat src;
	src = imread("../test_translation.jpg");

	//应用平移
	Mat dst;
	Mat M = (Mat_<double>(2, 3) << 1, 0, 200, 0, 1, -150);
	warpAffine(src, dst, M, src.size());

	//显示结果
	imshow("original image", src);
	imshow("translated image", dst);

	waitKey();
	return 0;
}
  1. 旋转
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值