[openCV]基于赛道追踪的智能车巡线方案V1

这篇具有很好参考价值的文章主要介绍了[openCV]基于赛道追踪的智能车巡线方案V1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[openCV]基于赛道追踪的智能车巡线方案V1,openCV,Python,python,opencv文章来源地址https://www.toymoban.com/news/detail-636392.html

import cv2 as cv
import os
import numpy as np

import time


# 遍历文件夹函数
def getFileList(dir, Filelist, ext=None):
    """
    获取文件夹及其子文件夹中文件列表
    输入 dir:文件夹根目录
    输入 ext: 扩展名
    返回: 文件路径列表
    """
    newDir = dir
    if os.path.isfile(dir):
        if ext is None:
            Filelist.append(dir)
        else:
            if ext in dir[-3:]:
                Filelist.append(dir)

    elif os.path.isdir(dir):
        for s in os.listdir(dir):
            newDir = os.path.join(dir, s)
            getFileList(newDir, Filelist, ext)

    return Filelist


def mid(follow, mask, img):
    height = follow.shape[0]  # 输入图像高度
    width = follow.shape[1]  # 输入图像宽度

    half = int(width / 2)  # 输入图像中线

    # 从下往上扫描赛道,最下端取图片中线为分割线
    for y in range(height - 1, -1, -1):

        if y == height - 1:  # 刚开始从底部扫描时
            left = 0
            right = width - 1
            left_scale = 0.5  # 初始赛道追踪范围
            right_scale = 0.5  # 初始赛道追踪范围
        elif left == 0 and right == width - 1:  # 下层没有扫描到赛道时
            left_scale = 0.25  # 赛道追踪范围
            right_scale = 0.25  # 赛道追踪范围
        elif left == 0:  # 仅左下层没有扫描到赛道时
            left_scale = 0.25  # 赛道追踪范围
            right_scale = 0.2  # 赛道追踪范围
        elif right == width - 1:  # 仅右下层没有扫描到赛道时
            left_scale = 0.2  # 赛道追踪范围
            right_scale = 0.25  # 赛道追踪范围
        else:
            left_scale = 0.2  # 赛道追踪范围
            right_scale = 0.2  # 赛道追踪范围

        # 根据下层左线位置和scale,设置左线扫描范围
        left_range = mask[y][max(0, left - int(left_scale * width)):min(left + int(left_scale * width), width - 1)]
        # 根据下层右线位置和scale,设置右线扫描范围
        right_range = mask[y][max(0, right - int(right_scale * width)):min(right + int(right_scale * width), width - 1)]

        # 左侧规定范围内未找到赛道
        if (left_range == np.zeros_like(left_range)).all():
            left = left  # 取图片最左端为左线
        else:
            left = int(
                (max(0, left - int(left_scale * width)) + np.average(
                    np.where(left_range == 255))) * 0.4 + left * 0.6)  # 取左侧规定范围内检测到赛道像素平均位置为左线

        # 右侧规定范围内未找到赛道
        if (right_range == np.zeros_like(right_range)).all():
            right = right  # 取图片最右端为右线
        else:
            right = int(
                (max(0, right - int(right_scale * width)) + np.average(
                    np.where(right_range == 255))) * 0.4 + right * 0.6)  # 取右侧规定范围内检测到赛道像素平均位置为右线

        mid = int((left + right) / 2)  # 计算中点

        # follow[y, mid] = 255  # 画出拟合中线,实际使用时为提高性能可省略
        # img[y, max(0, left - int(left_scale * width)):min(left + int(left_scale * width), width - 1)] = [0, 0, 255]
        # img[y, max(0, right - int(right_scale * width)):min(right + int(right_scale * width), width - 1)] = [0, 0, 255]

        if y == int((360 / 480) * follow.shape[0]):  # 设置指定提取中点的纵轴位置
            mid_output = mid
    cv.circle(follow, (mid_output, int((360 / 480) * follow.shape[0])), 5, 255, -1)  # opencv为(x,y),画出指定提取中点

    error = (half - mid_output) / width * 640  # 计算图片中点与指定提取中点的误差

    return follow, error, img  # error为正数左转,为负数右转


n = -1
# 存放图片的文件夹路径
path = "./d1"
imglist = getFileList(path, [])
for imgpath in imglist:
    n += 1
    if n < 0:
        continue

    start_time = time.time()

    img = cv.imread(imgpath)

    img = cv.resize(img, (640, 480))

    # HSV阈值分割
    img_hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
    mask = cv.inRange(img_hsv, np.array([43, 60, 90]), np.array([62, 255, 255]))

    follow = mask.copy()

    follow, error, img = mid(follow, mask, img)

    print(n, f"error:{error}")
    end_time = time.time()
    print("time:", end_time - start_time, "s")
    cv.imshow("img", img)
    cv.imshow("mask", mask)
    cv.imshow("follow", follow)
    cv.waitKey(0)

cv.destroyAllWindows()

到了这里,关于[openCV]基于赛道追踪的智能车巡线方案V1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • opencv——实现智能小车巡线

    a)原图 b)轨迹轮廓 c)边缘检测 d)轨迹绘制

    2024年02月04日
    浏览(45)
  • 基于opencv与mediapipe的面部跟踪(人脸检测追踪)python代码实现

            面部跟踪主要是从图像或视频中检测出人脸并输出人脸位置及其大小等有效信息,并在后续帧中继续捕获人脸的位置及其大小等信息,实时跟踪人脸。此技术可用于海关、机场、视频会议、拍照对焦、面部打码等业务场景。(与人脸识别是不同范畴)         本

    2024年01月17日
    浏览(73)
  • Python基于 opencv 的人脸识别考勤系统(V1.0),附源码

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月26日
    浏览(79)
  • 暴雨智算中心解决方案助跑人工智能新赛道

    ChatGPT、Sora等AI大模型应用让人工智能热潮迭起,越来越多的科技企业纷纷入局,竞跑AI和大模型新赛道。2024年中国《政府工作报告》也指出,人工智能成为新质生产力的重要代表,将持续开展“人工智能 +”行动。与此同时,以大模型训练、推理等为代表的人工智能技术创新

    2024年04月23日
    浏览(33)
  • STC8H8K蓝牙智能巡线小车——1. 环境搭建(基于RTX51操作系统)

    开发环境准备:Keil uVision5 烧录软件:STC-ISP(V6.92A) 芯片: STC8H8K64U-45I-LQFP64 芯片引脚: 打开Keil,点击【Project】,选择【new uVersion project】 Device选择【STC MCU Database】 在search中输入“8H8K”,选择【STC8H8K64U Series】,点击【ok】 选择项目所在的文件夹,添加一个Keil项目

    2024年01月17日
    浏览(52)
  • 【案例分析】基于OpenCV的篮球目标检测追踪与进球预测

    目前,模式识别中的运动视觉分析处在高速发展阶段,诸如国家863计划的无标记仿人乒乓球机器人[1]等项目,均表现出该领域的发展前景。其核心是利用计算机视觉技术从图像序列中检测、跟踪、识别人或物,并对其行为进行理解与描述。 此外,对于飞行物体的轨迹追踪与预

    2024年02月04日
    浏览(68)
  • 基于Python+OpenCV的手势识别系统:智能家居和智能小车的灯光控制

    基于python+opencv的手势识别系统,可控制灯的亮度,智能家居,智能小车。 基于python+opencv的手势识别系统软件。 内含svm模型,和肤色识别,锐化处理。 基于 win10+Python3.7的环境,利用Python的OpenCV、Sklearn和PyQt5等库搭建了一个较为完整的手势识别系统,用于识别日常生活中1-1

    2024年04月15日
    浏览(57)
  • Python轮廓追踪【OpenCV形态学操作】

    一些理论知识 OpenCV形态学操作理论1 OpenCV形态学操作理论2 OpenCV轮廓操作|轮廓类似详解 代码如下,可以直接运行

    2024年02月22日
    浏览(55)
  • 基于智能手机的行人惯性追踪数据集模型与部署

    这篇《 Smartphone-based Pedestrian Inertial Tracking: Dataset, Model, and Deployment 》论文介绍了一种基于智能手机惯性测量单元(IMU)的行人追踪和定位系统。主要内容和贡献如下: 数据集和实验设计 :作者开发了一个智能手机惯性测量数据集(SIMD),包含超过4500条步行轨迹,涵盖了约

    2024年02月03日
    浏览(29)
  • Python|OpenCV-实现自动“追踪并检测”视频中的人脸识别(14)

    前言 本文是该专栏的第15篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在本专栏之前,笔者在文章《Python|OpenCV-实现检测人脸以及性别检测(12)》中,有详细介绍通过OpenCV实现对图像中的人物人脸进行性别以及人脸检测,对此领域感兴趣的同学,可直接点击翻阅

    2024年04月14日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包