opencvsharp_基于轮廓的形状匹配中匹配坐标与旋转角度
本篇博客不讲理论!
需要看理论的这里附上三个博客:
① 一步一步实现多尺度多角度的形状匹配算法(C++版本)
② 图像的矩,以及利用矩求图像的重心,方向
③ OpenCV学习(十九) :图像的矩:moments(),HuMoments()
直接上干货!
以下代码为定位零件的像素位置,旋转角度 emmmmm其他没有……
我们拿着模板(轮廓)去匹配的时候,找到的目标像素坐标为:
首先用Cv2.MatchShapes去筛选图像中的轮廓,然后筛选好的轮廓如果分值达到要求了就拿着这个筛选好的轮廓去计算他的位置坐标:
Moments M1;
M1 = Cv2.Moments(contours);
double cX = M1.M10 / M1.M00;
double cY = M1.M01 / M1.M00;
那角度计算就又需要用到模板轮廓了:
Moments M1; //目标物
M1 = Cv2.Moments(contours_img[min_pos]);
double cX = M1.M10 / M1.M00; double cY = M1.M01 / M1.M00; //目标物的质心
float a1 = (float)(M1.M20 / M1.M00 - cX * cX);
float b1 = (float)(2 * (M1.M11 / M1.M00 - cX * cY));
float c1 = (float)(M1.M02 / M1.M00 - cY * cY);
double tanAngle1 = Cv2.FastAtan2(b1, a1 - c1) / 2;
// double tempAngle1 = tanAngle1 / 2;Moments M2; //模板
M2 = Cv2.Moments(imgTemplateContours);
double ic = M2.M10 / M2.M00; double jc = M2.M01 / M2.M00; //模板的质心
float a2 = (float)(M2.M20 / M2.M00 - ic * ic);
float b2 = (float)(2 * (M2.M11 / M2.M00 - ic * jc));
float c2 = (float)(M2.M02 / M2.M00 - jc * jc);
double tanAngle2 = Cv2.FastAtan2(b2, a2 - c2) / 2;double aimAngle = tanAngle2 - tanAngle1;//这个即为旋转的角度(单位:°)
如果没看懂,点击这个链接研究研究
https://blog.csdn.net/qq_48705696/article/details/111059991?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162082631916780261995936%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=162082631916780261995936&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-4-111059991.pc_v2_rank_blog_default&utm_term=OpenCVSharp
opencvsharp_基于轮廓的形状匹配中匹配坐标与旋转角度相关推荐
- 使用OpenCV实现Halcon算法(3)基于轮廓的模板匹配
声明:本篇仅仅是分享网上的开源项目,算法非本人原创. 〇.算法效果展示 0.1要定位的模板一 找到的匹配 在有污损情况下找到的匹配 0.2要定位的模板2 找到的匹配 一. 理论部分 模板匹配的算法包括 ...
- OpenCV基于形状的模板匹配
OpenCV基于形状的模板匹配 引言 基于形状的匹配算法 具体代码 KcgMatch.h KcgMatch.cpp main.cpp 匹配的结果 引言 在OpenCV中有个用于模板匹配的基本函数mat ...
- Qt与halcon联合开发实现基于形状的模板匹配
目录 前言 一.基于形状的模板匹配是什么? 二.具体实现 1.算子介绍 2.关键代码实现 总结 前言 第一次在CSDN写博客,准备写一个简单的形状匹配算子的用法及实现的介绍. 一.基于形状的模板匹配是 ...
- OpenCV实现基于形状的模板匹配(附源码)
效果预览 OpenCV实现基于形状的模板匹配(多角度+不同亮度) 实例演示一: 实例演示二: 实例演示三: 实例演示四: 实例演示五: 实例演示六ÿ
- 深度学习在视觉搜索和匹配中的应用
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Karsten Noe 编译:ronghuaiyang 导读 通过使用预训练网络在遥感图像应用中 ...
- 【深度学习】深度学习在视觉搜索和匹配中的应用
作者:Karsten Noe 编译:ronghuaiyang 导读 通过使用预训练网络在遥感图像应用中减少对标注数据的需求. 深度学习是一个了不起的方法,用于遥感数据集,如卫星或航空照片的目标检测 ...
- 论文解读 | 基于递归联合注意力的句子匹配模型
在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...
- CVPR 2020丨基于并行点检测和点匹配的单阶段实时HOI Detection方法
本文转载自知乎,为商汤科技CVPR 2020最新论文解读. https://zhuanlan.zhihu.com/p/144238209 在CVPR2020上,商汤团队联合北京航空航天大学Colab( ...
- c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...
Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...
最新文章
- Python 类—类属性(私有属性、公有属性、实例属性、局部变量)类方法(实例方法、静态方法)
- Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示...
- url存在宽字节跨站漏洞_利用WebSocket跨站劫持(CSWH)漏洞接管帐户
- 汽车出租管理系统javaee实训_温州专业电动汽车充电设备实训台厂家诚信互利-嘉育仪器...
- php和java访问中的一些区别
- jQuery学习-事件之绑定事件(五)
- 黄聪:WordPress默认编辑器可视化切换不见了,非插件导致消失问题
- 目标检测之非极大值抑制(NMS)
- 三种坐标系经纬度转化小工具
- mysql数据库的基本使用流程
- Auto Layout 使用心得—— 实现三等分
- uni-app--》什么是uniapp?如何开发uniapp?
- Hyperic HQ简介
- Building Worlds In Unreal 学习笔记——07-11 岩石树落木灌木绘制/溪水着色器/潮湿与焦散贴花/后处理
- 设置视频(Video)模式
- 理解MySQL复制(Replication)
- 继电器为何要并联二极管使用
- python获取当前时间并格式化_python获取当前时间并格式化
- widows10专业版激活,不用工具
- “由Autodesk教育版产品制作”水印在打印时怎么去掉的解决办法