位置: 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解析漏洞)

  • iphone13pro有没有充电器(iPhone13pro有没有光学防抖)

    iphone13pro有没有充电器(iPhone13pro有没有光学防抖)

  • 苹果13怎么从资源库移出软件(iphone13怎么导入资料)

    苹果13怎么从资源库移出软件(iphone13怎么导入资料)

  • 华为mate30pro丹霞橙是皮革材质的吗(华为mate30pro丹霞橙)

    华为mate30pro丹霞橙是皮革材质的吗(华为mate30pro丹霞橙)

  • 荣耀30pro+支持DC调光的吗(荣耀30pro+支持多少w快充)

    荣耀30pro+支持DC调光的吗(荣耀30pro+支持多少w快充)

  • p20存储扩展方法(p20pro存储扩展方法nm)

    p20存储扩展方法(p20pro存储扩展方法nm)

  • QQ回执消息怎么弄的(qq回执消息怎么找不到)

    QQ回执消息怎么弄的(qq回执消息怎么找不到)

  • qq空间背景多久免费一次(qq空间背景多久可以免费换一次)

    qq空间背景多久免费一次(qq空间背景多久可以免费换一次)

  • 美团众包永久封禁还能解封吗(美团众包永久封禁怎么解封)

    美团众包永久封禁还能解封吗(美团众包永久封禁怎么解封)

  • 微信语音连接失败是不是对方挂断(微信语音连接失败是对方还是自己)

    微信语音连接失败是不是对方挂断(微信语音连接失败是对方还是自己)

  • 微信通话中断是啥意思(微信电话不弹出来怎么回事)

    微信通话中断是啥意思(微信电话不弹出来怎么回事)

  • airpods pro可以用18w快充吗(airpods pro可以用15w的充电器嘛)

    airpods pro可以用18w快充吗(airpods pro可以用15w的充电器嘛)

  • 新买的苹果手机需要把电用完再充电吗(新买的苹果手机如何查询真伪)

    新买的苹果手机需要把电用完再充电吗(新买的苹果手机如何查询真伪)

  • 小米8能用5a充电线充吗(小米8能用5a充电线吗)

    小米8能用5a充电线充吗(小米8能用5a充电线吗)

  • ipad扩容机能买吗(iPad扩容机能买吗)

    ipad扩容机能买吗(iPad扩容机能买吗)

  • 手机国行和港行的区别(手机国行和港行哪个好)

    手机国行和港行的区别(手机国行和港行哪个好)

  • oppo耳机图标怎么关闭(oppo出耳机图标没声音)

    oppo耳机图标怎么关闭(oppo出耳机图标没声音)

  • 抖音删除了还会有记录吗(抖音删除了还会推送吗)

    抖音删除了还会有记录吗(抖音删除了还会推送吗)

  • 苹果退款一般多久到账花呗(苹果退款一般多长时间到账户)

    苹果退款一般多久到账花呗(苹果退款一般多长时间到账户)

  • ipone11是单卡还是双卡(苹果11是单卡的嘛?)

    ipone11是单卡还是双卡(苹果11是单卡的嘛?)

  • gettingwindowsready等多久

    gettingwindowsready等多久

  • 全民k歌怎么创建歌房(全民k歌怎么创建合唱歌房)

    全民k歌怎么创建歌房(全民k歌怎么创建合唱歌房)

  • excel银行卡号格式(excel输入银行卡号格式)

    excel银行卡号格式(excel输入银行卡号格式)

  • 微博会员自动续费怎么取消(微博会员自动续费怎么取消支付宝)

    微博会员自动续费怎么取消(微博会员自动续费怎么取消支付宝)

  • 苹果电脑怎么截图 Mac/Win7双系统下截屏快捷键介绍(苹果电脑怎么截屏ctrl加什么)

    苹果电脑怎么截图 Mac/Win7双系统下截屏快捷键介绍(苹果电脑怎么截屏ctrl加什么)

  • 动态壁纸怎么设置(动态壁纸怎么设置锁屏)

    动态壁纸怎么设置(动态壁纸怎么设置锁屏)

  • npm ERR! notarget No matching version found for xxx@^1.0.64. npm 插件安装失败

    npm ERR! notarget No matching version found for xxx@^1.0.64. npm 插件安装失败

  • 我国流转税的税种有哪些
  • 计提所得税会计处理
  • 差旅费抵扣进项税政策201939号文件
  • 弹性预算列表式如何计算
  • 烟叶税税率计算方法
  • 个体工商户税种认定
  • 滞纳金海关
  • 平价转让股权如何交税
  • 商誉转销会计分录
  • 年末本年利润结转未分配利润
  • 对公账户的钱怎么取出来才不用交税
  • 生产的产品不合格作废会计分录
  • 虚减利润如何进行账务调整?
  • 外出采购材料分录
  • 一般纳税人的含税收入怎么算
  • 企业核税需要什么资料
  • 住宅租给公司办什么手续
  • 工会经费可不可以不交
  • 公司车辆过户给公司
  • 公司为员工购买五险一金是什么意思
  • 公司购买的矿泉水属于什么科目
  • 德邦物流增值税发票怎么开
  • 公司主要业务介绍
  • 技术服务费属于什么税收分类编码
  • 房租费可以计入研发费用加计扣除吗
  • 电子发票字体不同
  • 营业外收入属于什么会计要素
  • 夫妻房产分割哪家好
  • 商业写字楼
  • 营改增后建筑业怎么开票
  • PHP:oci_password_change()的用法_Oracle函数
  • 纯净版xp系统打不开了
  • linux shell语句
  • 股票发行费用怎么处理
  • PHP:mdecrypt_generic()的用法_Mcrypt函数
  • nginx反向代理未知域名
  • php生成颜色面板
  • 自制半成品属于原材料还是库存商品
  • php提交表单数据有哪几种方法
  • 新必应申请使用资格
  • c++ array
  • 免税收入包括
  • 公司发放给员工的出差补助需要合并计算个税吗
  • 织梦标签理解
  • jquery vue.js
  • windows 和 linux
  • mongodb起源
  • 借受托代销商品贷受托代销商品款
  • 企业亏损所得税处理
  • 股东权益合计是所有者权益总和么
  • 现金解款单的会计分录
  • 公司借款给个人的税务问题
  • 住宿费开的增值税专用发票怎么记账
  • 跨年更正错误记账凭证的方法
  • 暂扣员工工资应怎么处理
  • 百分百控股代表着什么
  • 咨询服务公司的经营范围
  • 文化事业建设费税收优惠政策2022
  • 怎样备份微信聊天记录到新手机
  • 正确安全管理操作手册
  • cool file viewer pro是什么软件
  • win7中任务栏的高度最多可以调整到屏幕的
  • 口袋pe下载
  • win8优化驱动器
  • win8开机画面后黑屏
  • winxp如何删除网卡驱动
  • win8系统怎么设置自动关机
  • macbook的dock栏
  • ERROR 1045: Access denied for user: root@localhost (Using password: NO)
  • win7电脑磁盘突然不见了怎么办
  • [置顶]星陨计划
  • 使用jquery
  • iframe的高度自适应
  • Python搭建HTTP服务器和FTP服务器
  • nodejs co
  • jquery操作表单
  • 辽宁省社保系统操作
  • 重庆电子税务局网页版登录
  • 税务检查的程序
  • 资源税百科
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设