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

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

相关推荐
云烟成雨TD9 分钟前
Spring AI 1.x 系列【56】用大模型评判大模型:递归顾问实现自动化评估方案
人工智能·spring·自动化
Hello:CodeWorld12 分钟前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
AI客栈29 分钟前
K8s 自定义控制器中 WorkQueue 队列优化实践:基于 IPVS 转发原理的状态变化处理
人工智能
0xR3lativ1ty34 分钟前
每周AI工具新动态
人工智能
jerryinwuhan36 分钟前
面向产业带与中小企业数字化转型的电商运营人才培养模式
大数据·人工智能
Drgfd44 分钟前
智造赋能品控:汪进进以精益生产,夯实质量制造底座
人工智能·制造
米小虾1 小时前
"Chat is dead":OpenAI 正在杀死的不是聊天,是整个 AI 交互范式
人工智能·openai
冬奇Lab1 小时前
Agent 系列(18):成本与性能优化——省钱且更快
人工智能·llm·agent
Hefei GlobefishAI1 小时前
合肥合豚AI硬件方案:专为智能售货柜厂商定制的无人零售接口套件
人工智能·零售·自动售货机·无人零售硬件·ai硬件方案·智能售货柜·接口套件
冬奇Lab1 小时前
每日一个开源项目(第127篇):PM Skills Marketplace - 把顶级产品方法论塞进 AI Agent
人工智能·开源·资讯