C# 基于OpenCv的视觉工作流-章20-仿射变换

本章目标:
一、数学原理;
二、设置变换矩阵;
三、仿射变换;

在这里插入图片描述
仿射变换包含了图像的平移、旋转、缩放,原理是通是设置的矩阵与原图像素坐标进行计算,得到新的图像。

一、数学原理;
下图为平移矩阵数学原理,一个点平移到另一个点,即该点坐标值加上或减去平移量,可用线性方程描述平移过程,也可用矩阵描述。
在这里插入图片描述
二、设置变换矩阵;
1、平移矩阵
//平移矩阵编写3*3
Mat matM = new Mat(2, 3, MatType.CV_32FC1);
matM.At(0, 0) = 1;
matM.At(0, 1) = 0;
matM.At(0, 2) = xVal; //x坐标平移量
matM.At(1, 0) = 0;
matM.At(1, 1) = 1;
matM.At(1, 2) = yVal; //y坐标平移量
matM.At(2, 0) = 0;
matM.At(2, 1) = 0;
matM.At(2, 2) = 1;

2、旋转矩阵
OpenCv提供了旋转矩阵的获取算子
//旋转矩阵获取
Mat matM = Cv2.GetRotationMatrix2D(new OpenCvSharp.Point(centerX, centerY), angle, scale);
其中:参数centerX、centerY,为旋转的中心点坐标;
参数angle,为旋转角度;
参数scale,为缩放比例;

三、仿射变换;
OpenCv仿射变换可如下使用:
Mat matDst = new Mat();
Cv2.WarpAffine(image, matDst, matM, image.Size());
其中:参数1,为输入图像;
参数2,为输出图像;
参数3,为变换矩阵;
参数4,为输出图像尺寸;

效果如下
在这里插入图片描述
参考链接
https://www.bilibili.com/video/BV1RFtpeJE6h?spm_id_from=333.788.videopod.episodes&vd_source=3f9438f03abb9d3e91fda0640164d626&p=25

“VisionTool 探迹”免费视觉工具
下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i

“VisionTool Halcon”付费视觉工具
下载地址:https://pan.baidu.com/s/1v832KTonDYS6oNnWG2iZtQ?
对应系列文章“C# 基于Halcon的视觉工作流”,欢迎前往阅读。

上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐