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

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的视觉工作流",欢迎前往阅读。

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

相关推荐
冬奇Lab7 小时前
Workflow 系列(03):状态管理——持久化、幂等性与版本绑定
人工智能·工作流引擎
冬奇Lab7 小时前
每日一个开源项目(第146篇):openpilot - 开源自动驾驶辅助系统,曾在 Consumer Reports 评测中超过特斯拉 Autopilot
人工智能·开源·自动驾驶
吴佳浩8 小时前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
IT_陈寒9 小时前
Java的Date类又坑了我一次,改用时间戳真香
前端·人工智能·后端
码农胖大海9 小时前
AI额度不够用的解决方案
人工智能
后端小肥肠9 小时前
小红书虚拟商品怎么做?我先用 Skill 跑通了壁纸品类
人工智能·aigc·agent
feiyu_gao9 小时前
从零搭建个人 AI 工作台:一个管理者的 3 个月实验
人工智能·aigc·团队管理
先吃饱再说9 小时前
判断回文字符串,从一行代码到双指针优化
算法
程序员cxuan10 小时前
一句话,让你用上 GPT-5.6
人工智能·后端·程序员