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

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

相关推荐
别动我齐刘海1 分钟前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
甲维斯6 分钟前
ZCode 19号更新来了,偷偷上传问题“已修复”?!
人工智能
zhangfeng11337 分钟前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+11111 分钟前
算法 --滑动窗口
c++·算法·leetcode
是Dream呀14 分钟前
Harness 工程:让 Agent 真正把任务做完
人工智能·分布式·缓存·agent
打工仔折腾 AI26 分钟前
Prometheus 告警推钉钉:从单群 Webhook 到跨网络 Alertmanager 实战
人工智能·后端·python·性能优化
人工智能AI技术28 分钟前
LLM 应用的 Bulkhead 设计
人工智能
Ivanqhz31 分钟前
Ping-Pong 双缓冲
开发语言·人工智能·python·深度学习·mlir
bmxy小明同学39 分钟前
2026-09-18-embedding选型
人工智能
superxxd42 分钟前
基于rust的多平台原生GIS引擎
人工智能·物联网·实时音视频