位置: IT常识 - 正文

单目测距原理与实现(代码可运行)(单目测距精度)

编辑:rootadmin
单目测距原理与实现(代码可运行)

推荐整理分享单目测距原理与实现(代码可运行)(单目测距精度),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:单目图像测距,单目测距精度,单目测距精度,单目测距精度,单目测距和双目测距,单目测距原理与实现,单目测距原理与实现,单目测距方法,内容如对您有帮助,希望把文章链接给更多的朋友!

 Opencv3实现单目视觉测距

一、前言

单目视觉测距:网上有很多关于单目测距的文章,主要借鉴的是OpenCV学习笔记(二十一)——简单的单目视觉测距尝试和单目摄像机测距(python+opencv)两篇文章,在这里特别作出说明。

工作环境:Ubuntu16.04 + Opencv3.4.0 +Pycharm

单目相机:DFK AFUX236-M12

二、单目测距原理

单目相机测距常用或者说实用的方法就是相似三角形法,为了让大家更好地理解程序,这里简单说一下相似三角形法。

相似三角形:假设我们有一个宽度为 W 的目标或者物体。然后我们将这个目标放在距离我们的相机为 D 的位置。我们用相机对物体进行拍照并且测量物体的像素宽度 P 。这样我们就得出了相机焦距的公式:

F = (P x D) / W

单目测距原理与实现(代码可运行)(单目测距精度)

举个例子,假设我在离相机距离 D = 24 英寸的地方放一张标准的 8.5 x 11 英寸的 A4 纸(横着放;W = 11)并且拍下一张照片。我测量出照片中 A4 纸的像素宽度为 P = 249 像素。

因此我的焦距 F 是:

F = (248px x 24in) / 11in = 543.45

当我继续将我的相机移动靠近或者离远物体或者目标时,我可以用相似三角形来计算出物体离相机的距离:

D’ = (W x F) / P

为了更具体,我们再举个例子,假设我将相机移到距离目标 3 英尺(或者说 36 英寸)的地方并且拍下上述的 A4 纸。通过自动的图形处理我可以获得图片中 A4 纸的像素距离为 170 像素。将这个代入公式得:

D’ = (11in x 543.45) / 170 = 35 英寸

或者约 36 英寸,合 3 英尺。

从以上的解释中,我们可以看到,要想得到距离,我们就要知道摄像头的焦距和目标物体的尺寸大小,这两个已知条件根据公式:  

D’ = (W x F) / P 

得出目标到摄像机的距离D,其中P是指像素距离,W是A4纸的宽度,F是摄像机焦距。

三、实现代码:import cv2import numpy as npwin_width = 1920win_height = 1200mid_width = int(win_width / 2)mid_height = int(win_height / 2)foc = 2810.0real_wid = 11.69font = cv2.FONT_HERSHEY_SIMPLEXw_ok = 1capture = cv2.VideoCapture(1)capture.set(3, win_width)capture.set(4, win_height)while(True): ret, frame = capture.read() # frame = cv2.flip(frame, 1) if ret == False: break gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (5, 5), 0) ret, binary = cv2.threshold(gray, 127, 255, 0) kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3)) binary = cv2.dilate(binary, kernel, iterations=2) # 形态学膨胀 contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # cv2.drawContours(frame, contours, -1, (0, 255, 0), 2) for c in contours: if cv2.contourArea(c) < 2000: # 对于矩形区域,只显示大于给定阈值的轮廓,所以一些微小的变化不会显示。对于光照不变和噪声低的摄像头可不设定轮廓最小尺寸的阈值 continue x, y, w, h = cv2.boundingRect(c) # 该函数计算矩形的边界框 if x > mid_width or y > mid_height: continue if (x + w) < mid_width or (y + h) < mid_height: continue if h > w: continue if x == 0 or y == 0: continue if x == win_width or y == win_height: continue w_ok = w cv2.rectangle(frame, (x + 1, y + 1), (x + w_ok - 1, y + h - 1), (0, 255, 0), 2) dis_inch = (real_wid * foc) / (w_ok - 2) dis_cm = dis_inch * 2.54 # os.system("cls") # print("Distance : ", dis_cm, "cm") frame = cv2.putText(frame, "%.2fcm" % (dis_cm), (5, 25), font, 0.8, (0, 255, 0), 2) frame = cv2.putText(frame, "+", (mid_width, mid_height), font, 1.0, (0, 255, 0), 2) cv2.namedWindow('res', 0) cv2.namedWindow('gray', 0) cv2.resizeWindow('res', win_width, win_height) cv2.resizeWindow('gray', win_width, win_height) cv2.imshow('res', frame) cv2.imshow('gray', binary) c = cv2.waitKey(40) if c ==27: breakcv2.destroyAllWindows()程序效果图如下:

本文链接地址:https://www.jiuchutong.com/zhishi/299575.html 转载请保留说明!

上一篇:使用YOLOv5实现图片、视频的目标检测(yolov5的使用)

下一篇:JSONP数据劫持漏洞(json解析漏洞)

  • 钉钉群直播怎么共享屏幕(钉钉群直播怎么下载保存)

    钉钉群直播怎么共享屏幕(钉钉群直播怎么下载保存)

  • 灭屏显示的位置能调回上面吗(灭屏显示怎么调位置)

    灭屏显示的位置能调回上面吗(灭屏显示怎么调位置)

  • 手机的放大镜怎么打开(手机的放大镜怎么找)

    手机的放大镜怎么打开(手机的放大镜怎么找)

  • 小米10pro和华为mate30pro拍照对比(小米10pro和华为mate40pro拍照)

    小米10pro和华为mate30pro拍照对比(小米10pro和华为mate40pro拍照)

  • 华为p20智能识物找不到怎么办(华为手机智能识物功能在哪里)

    华为p20智能识物找不到怎么办(华为手机智能识物功能在哪里)

  • 固态硬盘有坏道吗(固态硬盘有坏道会蓝屏吗)

    固态硬盘有坏道吗(固态硬盘有坏道会蓝屏吗)

  • 松下笔记本为什么贵(松下笔记本为什么便宜)

    松下笔记本为什么贵(松下笔记本为什么便宜)

  • 为什么芒果TV的弹幕打不开(为什么芒果tv的弹幕不见了)

    为什么芒果TV的弹幕打不开(为什么芒果tv的弹幕不见了)

  • 新多闪有什么功能(多闪有啥用)

    新多闪有什么功能(多闪有啥用)

  • 小米网关是什么(小米网关是干嘛用的)

    小米网关是什么(小米网关是干嘛用的)

  • qq秀是什么在哪里找手机版(qq秀功能在哪里)

    qq秀是什么在哪里找手机版(qq秀功能在哪里)

  • vivox20有没有nfc功能(vivox20a有没有nfc)

    vivox20有没有nfc功能(vivox20a有没有nfc)

  • 我的抖音无法设置隐私(我的抖音无法设置铃声)

    我的抖音无法设置隐私(我的抖音无法设置铃声)

  • 打印的东西超过a4纸部分怎么调整(打印东西超过10张多少钱)

    打印的东西超过a4纸部分怎么调整(打印东西超过10张多少钱)

  • 华为哪款手机电池容量最大(华为哪款手机电池大)

    华为哪款手机电池容量最大(华为哪款手机电池大)

  • 华为手机怎么输入拼音声调(华为手机怎么输入m3)

    华为手机怎么输入拼音声调(华为手机怎么输入m3)

  • 微信影音号是什么(微信影音号是什么意思啊)

    微信影音号是什么(微信影音号是什么意思啊)

  • 云计算的模式有哪些(云计算模式有公有云私有云混合云)

    云计算的模式有哪些(云计算模式有公有云私有云混合云)

  • 无冲键盘是什么意思(无线键盘无冲)

    无冲键盘是什么意思(无线键盘无冲)

  • 华为mate30proa是2K屏幕吗(华为mate30pro屏幕2k)

    华为mate30proa是2K屏幕吗(华为mate30pro屏幕2k)

  • 微信头像上的国旗标志怎么弄掉(微信头像上的国旗是怎么回事)

    微信头像上的国旗标志怎么弄掉(微信头像上的国旗是怎么回事)

  • 拼多多砍价怎么生成二维码(拼多多砍价怎么没有了)

    拼多多砍价怎么生成二维码(拼多多砍价怎么没有了)

  • 云骑士系统可靠吗(云骑士好用吗)

    云骑士系统可靠吗(云骑士好用吗)

  • b站视频怎么下载到手机相册(b站视频怎么下载到u盘)

    b站视频怎么下载到手机相册(b站视频怎么下载到u盘)

  • dlss是什么(英伟达dlss是什么)

    dlss是什么(英伟达dlss是什么)

  • 目标检测算法——YOLOv5/v7/v8改进结合即插即用的动态卷积ODConv(小目标涨点神器)(运动目标检测算法)

    目标检测算法——YOLOv5/v7/v8改进结合即插即用的动态卷积ODConv(小目标涨点神器)(运动目标检测算法)

  • 超率累进税率定义
  • 税收实体法和程序法分类
  • 购房返现金需要什么资料
  • 个别计价法和先进先出法举例
  • 附加税预缴分录
  • 未确认融资收益怎么算
  • 事业单位法人证书查询
  • 外经证预交税怎么算
  • 用友反结账流程
  • 减半征收怎么算
  • 经营租用的设备有哪些
  • 油票需要填纳税信息吗
  • 如何区分劳务派遣和劳动合同
  • 3%小规模纳税人开出的发票 农产品成本如何计算
  • 帮对方公司垫付违法吗
  • 企业如何做好税务管理工作
  • 金银首饰零售消费税税收优惠
  • 收到红字发票后怎么做账
  • 营养成分表的计算表
  • 股东认缴和实缴的会计分录
  • 固定资产发现入账错误折旧如何处理?
  • 交通费,通讯费均按照上级行标准领取
  • 代开专票名称没有填写可以报销吗
  • 年度企业所得税申报表在哪里打印
  • 个人福利需要缴纳个税吗
  • php常用的设计模式在开发中的实例
  • mtask.exe - mtask是什么进程 有什么用
  • vue项目eslint配置
  • 巴芬岛旅游
  • 黄石国家公园的英文翻译
  • php对接第三方支付教程
  • vue clonedeep
  • typescripte
  • vue vscode snippets
  • 小程序开发公司十大排名
  • vue-router + element-plus实现面包屑导航栏和路由标签栏
  • 人人都能用英语pdf下载
  • 误餐补助所得税处理
  • 施工水电费账务处理流程
  • 金融资产或金融负债满足下列条件之一
  • 成本利润率算出的不含税吗
  • 印花税是根据什么申报的
  • 资产减值损失冲减
  • 往年补录情况
  • 年报中的利润表本月数需要填吗
  • 以货换货账务怎么处理
  • 上期留底增值税什么意思
  • 专利年费计入哪里
  • 权益法股权投资收益纳税调减
  • 企业处置子公司
  • 加计抵减期末有余额怎么办
  • 汇率调节主要手段
  • 什么叫摊销
  • 资产损失根据发票核算
  • 冲红专票分录
  • 劳务报酬与经营所得
  • 专票网上抵扣流程
  • 土地使用权使用年限怎么算
  • 该卡已在其他账户中存在什么意思
  • win8.1的开始菜单在哪
  • win10出现
  • win7系统IE浏览器版本
  • macbook移到废纸篓
  • 怎么在mac上查找iphone
  • win7调出ie浏览器
  • win10系统电脑怎么关机
  • cmd attribute
  • 我为什么要
  • 电脑自动检测硬盘怎么取消
  • css ul
  • 深入理解中国式现代化论文
  • kill某个进程
  • Unity WWW网络动态加载和储存在本地
  • 对应用进行单元测试的是
  • shell脚本定时任务怎么写
  • jquery弹窗弹出一个页面
  • 小规模纳税人进口环节的增值税税率
  • 收讫付讫是什么意思
  • 高新区税务局发工资时间
  • 现在哪个保险公司车险好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设