利用OpenCV实现图片中导线的识别

下面是一个需求,识别图片中的导线,要在图像中检测导线,我们需要采用不同于直线检测的方法。由于OpenCV没有直接的曲线检测函数,如同它对直线提供的HoughLinesHoughLinesP,检测曲线通常需要更多的图像处理步骤和算法:

  1. 边缘检测:首先使用Canny边缘检测器检测图像中的边缘。

  2. 寻找轮廓:然后使用cv2.findContours来寻找边缘连接的轮廓。轮廓可能对应于图像中的曲线。

  3. 轮廓分析:分析这些轮廓,筛选出满足特定条件的轮廓,如长度、曲率等。

  4. 绘制轮廓:在原始图像上绘制这些轮廓。

下面是成品代码:

# coding=UTF-8

import cv2
import numpy as np

def load_and_detect_curves(image_path, new_width, new_height):
    # 加载图像
    image = cv2.imread(image_path)
    if image is None:
        print("无法加载图像")
        return

    # 调整图像尺寸
    resized_image = cv2.resize(image, (new_width, new_height))

    # 将图像转换为灰度图
    gray_image = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY)

    # 应用高斯模糊
    blurred_image = cv2.GaussianBlur(gray_image, (5, 5), 0)

    # 使用Canny边缘检测器检测边缘
    edges = cv2.Canny(blurred_image, 50, 150, apertureSize=3)

    # 寻找轮廓
    contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    # 筛选和绘制轮廓
    for contour in contours:
        # 可以在这里添加条件筛选特定轮廓
        if len(contour) > 100:  # 例如,筛选长度大于100的轮廓
            cv2.drawContours(resized_image, [contour], -1, (0, 255, 0), 2)

    # 显示结果
    cv2.imshow('Detected Curves', resized_image)
    if cv2.waitKey(0) & 0xFF == ord('q'):
        cv2.destroyAllWindows()

# 使用函数
load_and_detect_curves('./images/2.png', 800, 600)  # 替换为你的图像路径和期望的尺寸
# load_and_detect_curves('./images/demo.jpg', 800, 600)  # 替换为你的图像路径和期望的尺寸

下面是运行效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/170704.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营Day36 —— 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 思路&#xff1a; 按照左边排序&#xff0c;按照452引爆气球的思路即可&#xff0c;统计重叠区间个数就是最小删除个数&#xff0c; 直接改点就好。 代码&#xff1a; //手搓 class Solution { private:static bool cmp(const vector<int>& a, c…

QT5 MSVC2017 64bit配置OpenCV4.5无需编译与示范程序

环境&#xff1a;Windows 10 64位 Opencv版本&#xff1a;4.5 QT&#xff1a;5.14 QT5 MSVC2017配置OpenCV 版本参考&#xff1a; opencv msvc c对应版本 1.安装MSVC2017&#xff08;vs2017&#xff09; 打开Visual Studio Installer&#xff0c;点击修改 选择vs2017生成工…

基于STM32设计的(无人)智慧超市-2023改进版

改进的内容: 增加了一个智慧超市登录入口,整个上位机只有一个APP文件。 可以选择顾客或者管理员的身份进去。优化了界面的显示。 一、项目背景 智慧超市是一种新型的零售形式,它将人工智能、物联网、云计算等技术应用到超市运营中,为消费者提供更加便捷、快捷、个性化的购…

对一个Series序列内的元素逐个扩展同一聚合操作一个序列中共有m个元素,从指定的第n个元素开始,对前i元素进行聚合计算Series.expanding()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 一个序列中共有m个元素 从指定的第n个元素开始 对前i元素进行聚合计算 其中&#xff1a;n < i < m 聚合计算&#xff1a;求最大、平均值等 Series.expanding(n).max() Series.expanding(…

隧道ip网络广播系统

隧道ip网络广播系统 隧道ip网络广播系统的优势有那些&#xff1f; 节省人力及维护成本&#xff1a;隧道ip网络广播系统可以自动播放节目&#xff0c;无需人工操作&#xff0c;节省了人力成本。定时广播&#xff0c;分区广播&#xff0c;全区广播&#xff0c;方便管理和简易化…

护眼灯买哪种好?考研必备的护眼台灯推荐

家里顶灯太暗了且高度太高&#xff0c;还是原始的LED灯&#xff0c;晚上用着眼睛都有点难受&#xff0c;还好遇到了儿童护眼灯。下面小编为大家介绍下儿童护眼灯哪个牌子好&#xff1f;什么护眼台灯比较专业 1、色温 台灯的色温也是一个需要考虑的因素&#xff0c;所谓的色温其…

引入 requests.codes 模块

在网络应用开发中&#xff0c;处理HTTP请求状态码是一项常见的任务。然而&#xff0c;使用Python的requests库时&#xff0c;我们会发现一个不便之处&#xff1a;requests库没有提供一个方便的方式来管理和引用HTTP请求状态码。 在使用requests库进行HTTP请求时&#xff0c;我…

上下文切换

我们都知道 Linux 是一个多任务操作系统&#xff0c;它支持的任务同时运行的数量远远大于 CPU 的数量。当然&#xff0c;这些任务实际上并不是同时运行的&#xff08;Single CPU&#xff09;&#xff0c;而是因为系统在短时间内将 CPU 轮流分配给任务&#xff0c;造成了多个任务…

智慧校园数字孪生三维可视化综合解决方案:PPT全83页,附下载

关键词&#xff1a;智慧校园解决方案&#xff0c;数字孪生解决方案&#xff0c;数字孪生可视化平台&#xff0c;数字孪生技术&#xff0c;数字孪生应用场景及典型案例&#xff0c; 一、数字孪生与智慧校园的定义 数字孪生&#xff1a; 数字孪生是充分利用物理模型、传感器更…

担忧CentOS停服?KeyarchOS系统来支撑

担忧CentOS停服&#xff1f;KeyarchOS系统来支撑 近年发生的“微软黑屏门”、“微软操作系统停更”等安全事件&#xff0c;敲响了我国 IT 产业的警钟&#xff0c;建立由我国主导的 IT 产业生态尤为迫切。对此&#xff0c;我国信息技术应用创新行业乘势而起&#xff0c;旨在通过…

lenovo联想笔记本ThinkPad P1 Gen5/X1 Extreme Gen5原装出厂Windows11预装OEM系统

链接&#xff1a;https://pan.baidu.com/s/13E97Nwc-0-N7ffPjEeeeOw?pwdep4l 提取码&#xff1a;ep41 原装出厂系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;32G或以上的U盘 文件格式&#xff1a;ISO 文件大小&#xff…

Springboot+vue的机动车号牌管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的机动车号牌管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的机动车号牌管理系统&#xff0c;采用M&#xff08;model&#xff09…

python数据结构与算法-06_算法分析

算法复杂度分析 前面我们说了很多次时间复杂度是 O(1), O(n) 啥的&#xff0c;并没有仔细讲解这个 O 符号究竟是什么。 你可以大概理解为操作的次数和数据个数的比例关系。比如 O(1) 就是有限次数操作&#xff0c;O(n) 就是操作正比于你的元素个数。 这一章我们用更严谨的方式…

python数据结构与算法-07_哈希表

哈希表 不知道你有没有好奇过为什么 Python 里的 dict 和 set 查找速度这么快呢&#xff0c;用了什么黑魔法吗&#xff1f; 经常听别人说哈希表(也叫做散列表)&#xff0c;究竟什么是哈希表呢&#xff1f;这一章我们来介绍哈希表&#xff0c;后续章节我们会看到 Python 中的字…

第28期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

什么是深度学习

一、深度学习的发展历程 1.1 Turing Testing (图灵测试) 图灵测试是人工智能是否真正能够成功的一个标准&#xff0c;“计算机科学之父”、“人工智能之父”英国数学家图灵在1950年的论文《机器会思考吗》中提出了图灵测试的概念。即把一个人和一台计算机分别放在两个隔离的房…

idea Maven Helper插件使用方法

idea Maven Helper插件使用方法 文章目录 idea Maven Helper插件使用方法&#x1f4c6;1.安装mavenhelper&#x1f5a5;️2.使用教程&#x1f4cc;3.解决冲突&#x1f4c7;4.列表展示依赖&#x1f9e3;5.tree展示依赖&#x1f5a5;️6.搜索依赖&#x1f58a;️7.最后总结 &…

Mac使用unrar和rar解压文件

WinRAR archiver, a powerful tool to process RAR and ZIP files 下载 tar -xzvf rarmacos-x64-624.tar.gz cd rar # 安装rar命令 sudo install -c -o $USER rar /usr/local/bin/ # 安装unrar命令 sudo install -c -o $USER unrar /usr/local/bin/ 压缩rar a test.rar readme…

PPT幻灯片里的图片,批量提取

之前分享过如何将PPT文件导出成图片&#xff0c;今天继续分享PPT技巧&#xff0c;如何提取出PPT文件里面的图片。 首先&#xff0c;我们将PPT文件的后缀名&#xff0c;修改为rar&#xff0c;将文件改为压缩包文件 然后我们将压缩包文件进行解压 最好是以文件夹的形式解压出来…

脱离form表单校验input(校验单个input输入框)提交时边框变红

把需要自定义校验的数据放在一个对象中&#xff0c;方便以后多个字段校验 customVerifyInps:{communityInp2:"",asPathInp:"",}, 在输入框中绑定id <el-inputid"communityInp2"placeholder""v-model"customVerifyInps.commu…