用OPENCV,C++实现直线卡尺工具原理,一步到位

这篇具有很好参考价值的文章主要介绍了用OPENCV,C++实现直线卡尺工具原理,一步到位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

卡尺工具实现步骤

不多逼逼,直接上步骤

Step1:根据给定的卡尺数,计算直线上的间断点,并保留间断点的位置,并返回。

opencv卡尺工具算法实现,c++,opencv

Step2:在间断上生成若干个矩形卡尺工具,与直线垂直:

opencv卡尺工具算法实现,c++,opencvStep3:计算每个卡尺矩形的内部点位集合,存放在二维数组里,如图。从起始点进行遍历,沿着两个方向遍历。

opencv卡尺工具算法实现,c++,opencv

Step4:遍历上面计算的点集合,在图片上将对应的像素保存在Mat对象中。上面的点集合计算结果是亚像素,因此需要进行插值。插值示意图如下:

opencv卡尺工具算法实现,c++,opencv

以计算P点位置的像素为例, f(x,y)表示位置上的像素值, 计算方式如下:

P0 = f(1,0) * dis_x1 + f(0,0) * dis_x0;P1 = f(1,1) * dis_x1 + f(0,1) * dis_x0;

则P = P0 * dis_y0 + P1 * dis_y1;

Step5:对ROI图进行垂直投影,定位边缘点在ROI上的X值,Y值边取ROI宽度的一半,如图:

opencv卡尺工具算法实现,c++,opencvStep6:得到了ROI上边缘点的位置,要映射回原图上。最后根据找到点进行拟合直线。

opencv卡尺工具算法实现,c++,opencv

实操

卡尺位置:

opencv卡尺工具算法实现,c++,opencv

根据卡尺位置截图:

opencv卡尺工具算法实现,c++,opencv

垂直投影:

opencv卡尺工具算法实现,c++,opencv

一维数组放大图:

opencv卡尺工具算法实现,c++,opencv

边缘处理:

opencv卡尺工具算法实现,c++,opencv

最后提取边缘点X位置,映射到原图位置上,如下图。红色点是找到边缘点。蓝色点是计算ROI点集合时,遍历矩形的起始点

opencv卡尺工具算法实现,c++,opencv

最后:

原理已经说明白了,很简单花点时间琢磨一下是可以做出来的。当然了,需要源码可以私聊,一杯咖啡钱啦,算是一点点创作激励。假如看了源码,有不理解的地方,可以在文章下留言。文章来源地址https://www.toymoban.com/news/detail-854871.html

到了这里,关于用OPENCV,C++实现直线卡尺工具原理,一步到位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python + OpenCV一步一步地实现图像拼接(原理与代码)

    图像拼接可以理解为三大步: 按顺序读取多幅图像,并保证图像按照从左到右的顺序。 发现这些图像像素之间的相关性(涉及到 单应性 )。 将这些图像拼接成为一张全景图像。 首先,需要了解如下几个概念。 Python OpenCV SIFT特征提取的原理与代码实现_乔卿的博客-CSDN博客

    2024年02月04日
    浏览(65)
  • Core Animation实战三(图层几何学),【一步教学,一步到位

    //calculate hour hand angle //calculate minute hand angle CGFloat minsAngle = (components.minute / 60.0) * M_PI * 2.0; //calculate second hand angle CGFloat secsAngle = (components.second / 60.0) * M_PI * 2.0; //设置锚点 self.hourLabel.layer.anchorPoint =self.minuteLabel.layer.anchorPoint =self.secondLabel.layer.anchorPoint = CGPointMake(0.5f, 0.9f); //r

    2024年04月25日
    浏览(34)
  • 【一步教学,一步到位】花里胡哨的3D翻页卡片,隔壁产品都馋哭

    with(cardShadowSizeFunc!!) { inParamMin = 0F inParamMax = 180F outParamMax = 50F outParamMin = 0F initValue = 10F } cardShadowDistanceFunc = CardShadowDistanceFunc() with(cardShadowDistanceFunc!!) { inParamMin = 0F inParamMax = 180F outParamMax = 50F outParamMin = 0F initValue = 10F } } 复制代码 2.5.3 阴影变化 为了更好地模拟3D效果,卡片阴影

    2024年04月14日
    浏览(40)
  • 快速搭建PyTorch环境:Miniconda一步到位

    快速搭建PyTorch环境:Miniconda一步到位 🔥 在深度学习的大潮中,PyTorch如同璀璨的明星,吸引着无数开发者的目光。但你知道吗?想要PyTorch发挥出最大威力,一个稳定且高效的环境是不可或缺的!而Miniconda,这位环境管理界的“轻量级冠军”,正是你搭建PyTorch环境的最佳拍档

    2024年02月19日
    浏览(34)
  • postman之接口自动化测试一步到位

    目录 概述 执行顺序 预处理脚本为请求添加动态传参 测试脚本 如何快速生成测试脚本 postman集成到Jenkins 概述 Postman是一个客户端接口测试工具,它不仅可以用在测试当中,还可以用在开发当中,在postman的使用过程中,其实大部分人都在做手工测试,name其实postman还有另外一

    2024年02月03日
    浏览(38)
  • 【一步到位】Jenkins的安装、部署、启动(完整教程)

    Linux系统 Centos 7 1、安装jdk 我安装的是jdk8,此处就不多说了,自己百度哈,很简单 2、安装jenkins 首先依次执行如下三个命令: 2.1、导入镜像: 2.2、导入公钥 2.3、安装jenkins:

    2024年02月10日
    浏览(43)
  • 电商数据分析方案:丰富经验护航,分析一步到位

    如果做电商数据分析的每一步都从零开始,摸着石头过河,反复测试修改。一通忙活下来,成果没见多少,人力物力成本倒是节节攀升,试问又有多少企业承受得住?如果有一套一步到位的数据分析方案,是不是就能大大地降低风险、缩短周期,提高性价比? 奥威BI电商数据

    2024年02月11日
    浏览(46)
  • 双系统安装ubuntu 22.04 LTS(一步到位)

            作为一个拥有两次都是一次成功安装好双系统的经验的人,我觉得我可以借这个文章仔细讲述一下,让大家都可以双系统安装都是一次成功。为什么有着两次安装经验呢,第一次安装完成后由于电脑的内存不太够了,然后重新装了一个固态和机械硬盘,再次安装了

    2024年01月23日
    浏览(59)
  • 【Spring Boot】项目端口号冲突解决方法,一步到位

    启动项目遇到以下问题: Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port. Process finished with exit code 1 找到要启动的项目的配置文件 application.properties ,没有的话可以在 resource

    2024年02月02日
    浏览(45)
  • MYSQL的卸载、下载、安装、配置一步到位(超详细教程)

    MYSQL的卸载、下载、安装、配置一步到位(超详细教程) 一、卸载 1.控制面板卸载 全部卸载 2.卸载数据文件 在安装的时候会有安装地址和数据库地址 找到自己安装数据库的地址,删除MySQL里面的内容 3.删除环境变量 此电脑–属性–高级系统设置–环境变量–系统变量–path(双击

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包