opencv——实现智能小车巡线

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

代码如下:

import cv2
import numpy as np

screen_height = 480
screen_width = 640

def readImg(path):
    img = cv2.imread(path, 1)
    img = cv2.resize(img, (screen_width, screen_height))
    return img


def createWait():
    img = np.ones((screen_height, screen_width), dtype=np.uint8)
    img[:, :] = 225
    return img

def calculate(dst2):
    points = []
    sum_x = 0
    sum_y = 0
    for y in range(screen_height):
        for x in range(screen_width):
            if dst2[y][x] == 0:
                points.append([x, y])
    for point in points:
        sum_x += point[0]
        sum_y += point[1]
    points_len = len(points)
    average_x = sum_x / points_len
    average_y = sum_y / points_len

    sum_up = 0
    sum_down = 0
    for point in points:
        sum_up += point[0] * point[1]
        sum_down += point[0] ** 2
    sum_up -= points_len * average_x * average_y
    sum_down -= points_len * average_x ** 2
    b = sum_up / sum_down
    a = average_y - b * average_x
    end = {'b': b, 'a': a}

    return end

def getLine(path):
    frame = readImg(path)
    # 灰度化
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imwrite('./gray.jpg', gray)


    # 二值化
    threshold_image = cv2.threshold(gray, 60, 225, cv2.THRESH_BINARY)
    binary = threshold_image[1]
    cv2.imwrite('./binary.jpg', binary)


    # 取反
    subtract = cv2.subtract(createWait(), binary)
    cv2.imwrite('./dst2.jpg', subtract)

    # 腐蚀
    kernel = np.ones((5, 5), np.uint8)
    erode = cv2.erode(subtract, kernel, iterations=3)

    # 膨胀
    dilate = cv2.dilate(erode, kernel)

    # 寻找轮廓
    contours = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    contour = contours[0]

    area = []

    for k in range(len(contour)):
        area.append((cv2.contourArea(contour[k])))

    max_idx = np.argmax(np.array(area))

    tatImg = cv2.drawContours(createWait(), contour, max_idx, (0, 0, 225), -1)
    cv2.imwrite('./tatImg.jpg', tatImg)

    return calculate(tatImg)


def showResult(path):
    img = readImg(path)
    end = getLine(path)

    for i in range(screen_width):
        cv2.circle(img,
                   (int(i), int(end['b'] * i + end['a'])),
                   2,
                   (0, 0, 225),
                   0,
                   1)
    cv2.imshow(path[6:], img)
    cv2.imwrite('./img.jpg', img)


if __name__ == '__main__':
    path = r'path/to/your/img'
    showResult(path=path)

识别效果:

a)原图
opencv智能小车,学习笔记,opencv,python,计算机视觉,巡线
b)轨迹轮廓
opencv智能小车,学习笔记,opencv,python,计算机视觉,巡线

c)边缘检测
opencv智能小车,学习笔记,opencv,python,计算机视觉,巡线
d)轨迹绘制
opencv智能小车,学习笔记,opencv,python,计算机视觉,巡线文章来源地址https://www.toymoban.com/news/detail-760305.html

到了这里,关于opencv——实现智能小车巡线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 电赛智能送药小车_OpenMV巡线&识别十字路口完整代码

      整体思路 :通过划分ROI区域分区进行识别,中央 ROI 区域为巡线,左右两侧的 ROI_L 和 ROI_R 为十字路口识别 . 主程序如下 : # 本文代码中所导入的pid.py就是OpenMV官网上例程的代码 需要完整源码请私信我。

    2024年02月12日
    浏览(59)
  • STC8H8K蓝牙智能巡线小车——3.按键开关状态获取

    电路分析 引脚为P37 开关未按下时,P37是高电平 开关按下时,GND导通,P37是低电平 编程思路 Driver目录中添加KEY.h文件,应包含引脚定义、开关GPIO实例化函数、开关状态获取函数以及当按下和未按下时执行不同的函数(函数指针作为函数参数) Driver目录中添加KEY.c文件,做具

    2024年01月17日
    浏览(49)
  • Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

    【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程 CSDN标题里个括号对应视频的分P OpenCV+Python CSDN专栏 Gitee 项目地址 Python:3.11.5 Anaconda:23.7.4 IDE:vscode 运行环境:Windows OpenCV:4.8.1 Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置 本节课来了解以下OpenCV的简单使用

    2024年02月03日
    浏览(80)
  • 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日
    浏览(53)
  • 基于Python+OpenCV的手势识别系统:智能家居和智能小车的灯光控制

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

    2024年04月15日
    浏览(57)
  • 计算机竞赛 python+opencv+深度学习实现二维码识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 python+opencv+深度学习实现二维码识别 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/danch

    2024年02月12日
    浏览(62)
  • 计算机竞赛 python+深度学习+opencv实现植物识别算法系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月12日
    浏览(76)
  • python+深度学习+opencv实现植物识别算法系统 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月07日
    浏览(86)
  • 计算机竞赛 python opencv 深度学习 指纹识别算法实现

    🔥 优质竞赛项目系列,今天要分享的是 🚩 python opencv 深度学习 指纹识别算法实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:4分 创新点:4分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年02月13日
    浏览(82)
  • 计算机竞赛 深度学习 python opencv 实现人脸年龄性别识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸年龄性别识别算法实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:3分 🧿 更多资料, 项目分享: https://gitee

    2024年02月07日
    浏览(85)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包