当前位置: 首页 > news >正文

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

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

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

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

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

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

下面是成品代码:

# coding=UTF-8import cv2
import numpy as npdef 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)  # 替换为你的图像路径和期望的尺寸

下面是运行效果:

http://www.lryc.cn/news/239174.html

相关文章:

  • 关于VITS和微软语音合成的效果展示(仙王的日常生活第1-2209章)
  • 普乐蛙VR航天航空巡展项目来到了第七站——绵阳科博会
  • 行情分析——加密货币市场大盘走势(11.22)
  • QT--MP3项目数据库数据表设计与实现_歌曲搜索
  • gzip 压缩优化大 XML 响应的处理方法
  • 数字化文旅系统,让景区营销变得更加简单!
  • 配置命令别名
  • zookeeper应用之分布式队列
  • 取数游戏2(动态规划java)
  • Spring Boot中配置文件生效位置
  • AIGC创作系统ChatGPT网站系统源码,支持最新GPT-4-Turbo模型
  • 【JavaEE】操作系统与进程
  • 【MATLAB源码-第86期】基于matlab的QC-LDPC码性能仿真,输出误码率曲线。
  • 【0236】聊一聊PG内核中的命令标签(Command Tags、CommandTag、tag_behavior)
  • Python武器库开发-flask篇之error404(二十七)
  • 录屏软件自动开启录视频,是如何实现的?
  • 模拟shell小程序
  • webpack配置全局scss
  • 想面试前端工程师,必须掌握哪些知识和技能?【云驻共创】
  • 京东数据分析(京东数据采集):2023年10月京东平板电视行业品牌销售排行榜
  • 在 Linux 中,可以使用分号 (;) 或者 运算符来执行多条命令
  • 一些必备的 Redis 命令 | Navicat
  • 神经网络常用激活函数详解
  • UVA11584划分成回文串 Partitioning by Palindromes
  • 第十一章 将对象映射到 XML - 控制流属性的映射形式
  • torchvision中的标准ResNet50网络结构
  • Java 多线程之 synchronized (互拆锁/排他锁/非观锁)
  • 开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势未来发展方向
  • 如何使用无代码系统搭建软件平台?有哪些开源无代码开发平台?
  • 微信怎么设置自动回复?