返回顶部
首页 > 资讯 > 后端开发 > Python >OpenCV实现单目摄像头对图像目标测距
  • 807
分享到

OpenCV实现单目摄像头对图像目标测距

2024-04-02 19:04:59 807人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

使用OpenCV对单目摄像头中的目标实现测量距离(python实现),供大家参考,具体内容如下 1.方法介绍: 根据相似三角形的方法: F = P×D / W , 其中W

使用OpenCV对单目摄像头中的目标实现测量距离(python实现),供大家参考,具体内容如下

1.方法介绍:

根据相似三角形的方法:

F = P×D / W , 其中W为物体的实际宽度,D为物体平面与相机平面的距离,照片上物体的像素宽度为P,相机焦距为F
D = F×W / P ,这样知道相机的内参焦距就可以求得物体平面与相机平面的距离D

2.代码:

import cv2
import imutils
import numpy as np
from imutils import paths


# 获取目标的轮廓信息
def find_marker(image):

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 颜色空间转换函数,RGB和BGR颜色空间转换 opencv默认的颜色空间是BGR
    gray = cv2.GaussianBlur(gray, (5, 5), 0)  # 高斯滤波,对图像进行滤波操作 ,(5,5)表示高斯核的大小 ,0 表示标准差取0
    edged = cv2.Canny(gray, 35, 125)  # canny 算子 边缘检测 35是阈值1, 125是阈值2,大的阈值用于检测图像中的明显边缘,小的阈值用于将不明显的边缘检测连接起来

    cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHaiN_APPROX_SIMPLE)  # 找到详细的轮廓点, RETR_LIST 以列表的形式输出轮廓信息
    # CHAIN_APPROX_SIMPLE: 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标

    cnts = imutils.grab_contours(cnts)  # 寻找图像的轮廓信息,输入图像为一个二值图像

    c = max(cnts, key=cv2.contourArea)  # 轮廓点的面积计算
    # return edged
    return cv2.minAreaRect(c)  # 求出在 C点集下的像素点的面积


def get_F(W, D):

    P = find_marker(image)[1][0] / 118.11  # 300dim  1cm = 118.11像素值

    return (P*D) / W  # F = get_F(2, 126)  # 输出的值为cm f=24.003cm 焦距


def distance_to_camera(F, P, W):

    return (F*W) / P  # F 为相机的焦距,w为物体的宽度,P为物体在照片中的像素宽度,需要转换为cm


W = 2  # 需要手动测量目标的宽度,单位为cm
F = 24.00304  # 根据get_F求出 ,get_F()函数是为了求得相机的焦距,需要通过测试图像中的目标距离来求出

image = cv2.imread('065_5.jpg')
marker = find_marker(image)
P = marker[1][0] / 118.11  # 300dim 1cm = 118.11像素值 ,300dim指300分辨率,有1080分辨率,像素值的㎝转换是不同
inches = distance_to_camera(F, P, W) #
print('距离为:%.2f cm' % inches)  # 单位为cm

# draw a bounding box around the image and display it
box = cv2.cv.BoxPoints(marker) if imutils.is_cv2() else cv2.boxPoints(marker)
box = np.int0(box)
cv2.drawContours(image, [box], -1, (0, 255, 0), 2)
cv2.putText(image, "%.2fft" % inches,
            (image.shape[1] - 200, image.shape[0] - 20), cv2.FONT_HERSHEY_SIMPLEX,
            2.0, (0, 255, 0), 3)
cv2.imshow("image", image)

cv2.waiTKEy(0)
cv2.destroyAllwindows()

3.效果验证

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: OpenCV实现单目摄像头对图像目标测距

本文链接: https://lsjlt.com/news/119714.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • OpenCV实现单目摄像头对图像目标测距
    使用opencv对单目摄像头中的目标实现测量距离(python实现),供大家参考,具体内容如下 1.方法介绍: 根据相似三角形的方法: F = P×D / W , 其中W...
    99+
    2024-04-02
  • python利用opencv调用摄像头实现目标检测
    目录使用到的库实现思路实现代码2020/4/26更新:FPS计算FPS记录的原理FPS实现代码使用到的库 好多人都想了解一下如何对摄像头进行调用,然后进行目标检测,于是我做了这个小B...
    99+
    2024-04-02
  • Android双目三维重建:Android双目摄像头实现双目测距
    Android双目三维重建:Android双目摄像头实现双目测距 目录 Android双目三维重建:Android双目摄像头实现双目测距 1.开发版本 2.Android双目摄像头 3.双目相机标定  (1)双目相机标定-Python版  ...
    99+
    2023-09-04
    android 双目测距 android双目测距 android三维重建 三维重建
  • 基于OpenCV的摄像头测距的实现示例
    目录前言一、测距原理二、代码1.引入库2.读入数据总结前言 去年暑假参加了一个比赛,比赛内容中需要确定目标的位置 本来想全用图像完成的,最后发现不是很符合要求。比完赛之后,就忙别的事...
    99+
    2024-04-02
  • 教你用YOLOv5实现多路摄像头实时目标检测功能
    目录前言一、YOLOV5的强大之处二、YOLOV5部署多路摄像头的web应用1.多路摄像头读取2.模型封装3.Flask后端处理4.前端展示总结前言 YOLOV5模型从发布到现在都是...
    99+
    2024-04-02
  • 怎么用YOLOv5实现多路摄像头实时目标检测功能
    这篇文章将为大家详细讲解有关怎么用YOLOv5实现多路摄像头实时目标检测功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言YOLOV5模型从发布到现在都是炙手可热的目标检测模型,被广泛运用于各大场景之...
    99+
    2023-06-29
  • opencv摄像机标定的实现
    原图 矫正后 我新建了个jz的文件夹放相机矫正所需要拍摄的图片,如下:共12张   # coding:utf-8 import cv2 import nu...
    99+
    2024-04-02
  • C++如何利用opencv实现单目测距
    这篇文章将为大家详细讲解有关C++如何利用opencv实现单目测距,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。闲来无事,用C++做了一个简易的单目测距。算法用的cv自带的,改改参数就行。实现了读取照片测...
    99+
    2023-06-25
  • iOS实现摄像头实时采集图像
    本文实例为大家分享了iOS实现摄像头实时采集图像的具体代码,供大家参考,具体内容如下 新接到一个实时获取摄像头当前照片的需求,在设定的时间内需要保持摄像头处在开启状态并可以实时回调到...
    99+
    2022-05-24
    iOS 摄像头
  • OpenCV实现图像距离变换
    图像中两个像素之间的距离有多种定义方式,图像处理中常用的距离有欧式距离、街区距离和棋盘距离 欧式距离 略 街区距离 两个像素点X方向和Y方向的距离之和。欧式距离表示的是从一个像素点到...
    99+
    2024-04-02
  • opencv+mediapipe实现人脸检测及摄像头实时示例
    目录单张人脸关键点检测单张图像人脸检测摄像头实时关键点检测单张人脸关键点检测 定义可视化图像函数 导入三维人脸关键点检测模型 导入可视化函数和可视化样式 读取图像 将图像模型输入,获...
    99+
    2024-04-02
  • opencv如何实现摄像机标定
    小编给大家分享一下opencv如何实现摄像机标定,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!原图矫正后我新建了个jz的文件夹放相机矫正所需要拍摄的图片,如下:共...
    99+
    2023-06-29
  • Win7系统下添加单独的摄像头图标直接使用摄像头功能
      Win7、Win8系统下区别于XP系统,通常不显示单独的摄像头图标,若希望实现此功能,只需下载附件中的摄像头插件,双击运行即可实现摄像头图标在“我的电脑、计算机”下面的显示。   测试系统:W...
    99+
    2023-06-01
    win7添加摄像头 win7摄像头在哪 图标 系统 摄像头 功能 Win7
  • C++利用opencv实现单目测距的实现示例
    闲来无事,用C++做了一个简易的单目测距。算法用的cv自带的,改改参数就行。实现了读取照片测距,读取笔记本摄像头测距,读取视频测距三个功能。 为什么不用双目测距?因为没钱买摄像头……...
    99+
    2024-04-02
  • opencv+mediapipe如何实现人脸检测及摄像头实时示例
    这篇文章主要为大家展示了“opencv+mediapipe如何实现人脸检测及摄像头实时示例”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“opencv+mediapipe如何实现人脸检测及摄像头实...
    99+
    2023-06-22
  • iOS实现摄像头实时采集图像的方法
    小编给大家分享一下iOS实现摄像头实时采集图像的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!iOS实现摄像头实时采集图像的具体内容如下新接到一个实时获取摄像...
    99+
    2023-06-14
  • Java+OpenCV调用摄像头实现拍照功能
    目录环境准备制作主界面整体结构介绍核心代码与知识点讲解JPanel中如何显示摄像头的图像OpenCV调用摄像头使用摄像头拍照完整代码OpenCVUtil.javaImageUtils...
    99+
    2024-04-02
  • 怎么在Python3中使用OpenCV实现实时摄像头人脸检测
    这篇文章主要介绍怎么在Python3中使用OpenCV实现实时摄像头人脸检测,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!OpenCV 是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面...
    99+
    2023-06-25
  • C++实现图像目标区裁剪ImageCropping
    目录场景需求功能函数代码C++测试代码测试效果     场景需求 在做图像处理时,有时候会需要适当地进行一些裁剪工作,比如我做干涉测量领域,我们所要处理...
    99+
    2024-04-02
  • JavaCV摄像头实战之实现口罩检测
    目录本篇概览问题提前告知关于百度AI开放平台编码:添加依赖库编码:封装请求和响应百度AI开放平台的代码DetectService接口的实现主程序验证本篇概览 本文是《JavaCV的摄...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作