如何在Python中获取平面图的外部轮廓?

2024-01-07

获得平面图外部轮廓的最佳方法是什么?

蛇算法效果不佳,因为某些平面图太凸。


您只需要在查找轮廓时调整灰度图像的阈值以包含灰色虚线路径,由于输入图像的主要部分是白色,因此我们可以选择接近255的阈值,例如230。然后查找轮廓阈值化。

您可以使用cv2.approxPolyDP计算近似多项式形状,但这没有多大帮助,因此该步骤是可选的。

代码片段可能如下所示:

import cv2

img = cv2.imread("/Users/anmoluppal/Downloads/1tl6D.jpg")

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(img_gray, 230, 255, cv2.THRESH_BINARY_INV)

img_, contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

largest_contour_area = 0
for cnt in contours:
    if (cv2.contourArea(cnt) > largest_contour_area):
        largest_contour_area = cv2.contourArea(cnt)
        largest_contour = cnt

epsilon = 0.001*cv2.arcLength(largest_contour,True)
approx = cv2.approxPolyDP(largest_contour,epsilon,True)

final = cv2.drawContours(img, [approx], 0, [0, 255, 0])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中获取平面图的外部轮廓? 的相关文章

  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • Node.js 转换 HEIC 文件

    我需要一种使用 Node js 将照片从 HEIC 格式转换为 jpg 或 png 的方法 我已经搜索过 似乎找不到任何有效的东西 npm i heic 转换 const convert require heic convert async
  • 是否可以将 ppm 文件从 p3 转换为 p6 或使用pillow lib 打开 ppm p3 文件

    是否可以将 ppm 文件从 p3 转换为 p6 或使用pillow lib 打开并读取 ppm p3 文件 我实际上有 ppm p3 文件 并尝试使用pillow lib 将它们转换为 jpg 但不幸的是 它不读取 p3 文件 只读取 p6
  • 使用缩略图器,我可以制作具有相同高度和宽度的缩略图,无论图像大小如何

    In 缩略图器 http code google com p thumbnailator 我正在制作缩略图 如果图像大小是 400 300 并且如果我执行以下操作 Thumbnails of new File original jpg si
  • 估计 libGD 操作所需的内存

    在尝试使用 libGD 在 PHP 中调整图像大小之前 我想检查是否有足够的内存可用于执行该操作 因为 内存不足 会完全终止 PHP 进程并且无法捕获 我的想法是 原始图像和新图像中的每个像素 RGBA 需要 4 字节内存 check av
  • OpenCV Python 和 SIFT 功能

    我知道有很多关于Python and OpenCV但我没有找到有关这个特殊主题的帮助 我想提取SIFT关键点来自 python OpenCV 中的图像 我最近安装了 OpenCV 2 3 可以访问 SURF 和 MSER 但不能访问 SIF
  • 如何使用PHP在服务器端缩小图像?

    我有一些从服务器提取的图像 imgUrl保存图像的路径 现在我用 img src width 100 height 200 或 CSS 来缩小图像 但我想在 PHP 中执行此操作 以便将已缩放的图像提供给 DOM 有任何想法吗 Thanks
  • 针对不同处理器架构的 Gradle android 构建

    我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构 armeabi armeabi v7a x86 mips 构建 4 个单独的 apk 我有为 4 个 CPU 架构构建的本机 OpenCV 库libs folde
  • C++ OpenCV 3.4 / FFMPEG 3.4.1 VideoWriter 和 MP4 输出文件格式

    我正在运行 Linux 内核 4 9 35 ti r44 的 ARM BeagleBone X 15 Debian 机器 在我的 C Qt 5 应用程序中 我想将 cv Mat 帧保存为 MP4 格式视频 我安装了 libx264 并从头开
  • 车辆分割和跟踪

    我已经从事一个项目一段时间了 目的是在无人机捕获的视频中检测和跟踪 移动 车辆 目前我正在使用 SVM 该 SVM 接受了从车辆和背景图像中提取的局部特征的特征袋表示的训练 然后 我使用滑动窗口检测方法来尝试定位图像中的车辆 然后我想要跟踪
  • OpenCV Sobel 滤波器 - 为什么它看起来这么糟糕,尤其是与 Gimp 相比?

    我正在尝试使用 OpenCV 重建一些我之前在 Gimp 中完成的预处理 第一级是用于边缘检测的 Sobel 滤波器 它在 Gimp 中运行得很好 现在这是我对 OpenCV 的尝试 opencv imgproc Sobel src sca
  • 尝试使使用 OpenCV 的 java 应用程序(可执行 Jar)可移植。出现不满意的链接错误

    我制作了一个应用程序 用于从网络摄像头抓取视频并使用 OpenCV 和 JavaCV 检测运动 我正在尝试使用 eclipse 导出为可执行 jar 该程序在 eclipse 中运行良好 就像我编写该程序的计算机上的 exe jar 一样
  • 将 CvSeq 保存到数组

    我对 OpenCV 文档有点迷失 我想将 cvFindContours 返回的 CvSeq 保存到一个数组中 据我了解它将返回 CvContour 的 seq 但我找不到它包含的内容 我应该保存其中的哪些部分 稍后我可以迭代它并说调用 cv
  • 在Spyder(Python 3.6)中导入cv2时出现导入错误

    我已经在Windows操作系统中安装了opencv 3 0 0 我已运行该应用程序并已成功将其安装在C 驱动器并还复制了cv2 pyd文件输入C Python27 Lib site packages正如我在几个教程视频中看到的那样 在我的
  • 使用 Racket FFI 进行快速阵列访问

    我正在尝试在 Racket 中编写 OpenCV FFI 并达到了需要有效操作数组的地步 然而 我所有使用 Racket FFI 访问数组的尝试都会导致代码效率非常低 有没有办法使用 FFI 快速访问 C 数组 在 Racket 中 这种类
  • C++ OpenCV imdecode 慢

    我将图像的字节数组从 C 发送到 C 库 我使用 OpenCV 版本 3 3 1 解码图像 BMP 图像解码速度很快 但 JPEG 图像解码速度很慢 如何加快 JPEG 图像的解码时间 多线程 GPU 解码性能 Resolution For
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • HTC One M8 - 使用第二个后置摄像头

    我有一台 HTC One M8 设备 它有 2 个后置摄像头和一个额外的前置摄像头 我的问题是尝试访问第二个后置摄像头 我已经成功制作了一个应用程序 它同时运行 2 个摄像头 1 个前置摄像头和 1 个后置摄像头 但问题是我无法访问第二个后
  • 使用 Brew 安装 OpenCV 永远不会完成

    所以我尝试使用 Homebrew 安装 opencv 但它不起作用 我用了brew tap homebrew science进而brew install opencv发生的情况是 gt Installing opencv from home

随机推荐

  • 在便携式草莓上安装 Gtk2

    我下载了 strawberry perl 5 12 2 0 portable 和 gtk bundle 2 22 1 20101227 win32 我在某个目录中提取了草莓 perl 并在那里放置了包含 gtk 内容的 gtk 文件夹 在p
  • 以编程方式使用 Sim1 或 Sim2 发送短信的选项

    我有一部带有 2 张 SIM 卡的 Android 手机 我想使用 Sim1 或 Sim2 发送短信 默认情况下 消息是从 sim1 发送的 但我想从 sim2 发送短信 是否可以设置使用Sim1或Sim2发送短信 如果有一个设置选项可以使
  • C++ 中的 getline() - 不需要 _GNU_SOURCE?

    首先 我对 C 还很陌生 我相信getline 不是标准 C 函数 所以 define GNU SOURCE需要使用它 我现在使用 C g 告诉我 GNU SOURCE已经定义 g Wall Werror parser cpp parser
  • 使用 maven 构建 apk 时出现 ClassNotFoundException

    我想在 Android 开发中切换到 Maven 进行构建过程 我跟着http www sonatype com books mvnref book reference android dev sect archetype html htt
  • 在 matplotlib 中,为什么用细线绘图更快?

    我今天偶然发现了这一点 如果线宽小于 1 0 在 matplotlib 中绘制线条似乎要快得多 我只在Mac上测试过这个 但效果似乎很强 例如 如果您尝试此代码 您将发现线宽为 0 5 时数据绘制速度比线宽 1 0 快约 10 倍 impo
  • 如何使 org-protocol 在 Openbox 上工作?

    I tried 说明 http orgmode org worg org contrib org protocol html 我正在使用 FirefoxLubuntu https en wikipedia org wiki Lubuntu
  • 在c++中将高斯曲线拟合到某个直方图峰值

    我有两个关于将高斯曲线拟合到直方图峰值的问题 我的第一个问题是一个非常基本的问题 如何将高斯曲线拟合到整个直方图 这是否仅仅意味着我必须找出并计算直方图的平均值 和偏差 并将它们放入高斯曲线的公式中 下面的例子正确吗 假设 仅作为示例 我有
  • CSS 弹性框最后一个空格被删除

    通过设置display的一个项目到flex我发现最后一个空格已从文本字符串中删除 div class has flex Some text a href link Link a div Becomes div class has flex
  • 有没有办法只在 Tomcat/Wildfly/Glassfish 启动时运行方法/类?

    我需要在 Tomcat 启动时删除临时文件 包含临时文件的文件夹的传递位于 applicationContext xml 中 有没有办法只在 Tomcat 启动时运行方法 类 你可以写一个ServletContextListener它从调用
  • iOS SDK 中的通知中心与委托

    为什么 Apple 选择使用委派来进行 SDK 对象之间的某些通信 并为其他对象将通知发布到通知中心 特别是 我正在考虑来自 UIWindow 的一组键盘外观通知 是否因为通知中心系统意味着多个对象可以使用键盘外观操作作为触发器来更改其状态
  • Clojure - 返回类型的调度? (与 Haskell 类型类一样具有表现力)

    这是一个关于 Clojure 与 Haskell 等其他语言的表达能力的问题 更广泛的问题是解决表达问题 http en wikipedia org wiki Expression problem 这个问题 https stackoverf
  • Flutter const 与 const 构造函数

    直到今天我还没有看到这个 dart 代码建议 我很高兴遵循最佳实践 但说实话 这在没有构造函数的有状态小部件中出现是没有意义的 我认为这可能与 immutable 注释有关 但似乎并非如此 而且 dart 文档也没有真正的帮助 Dart 文
  • JSONParser 和 JSONRenderer 之间的区别

    我正在经历Django Rest框架教程 http www django rest framework org tutorial 1 serialization 关于我陷入困境的序列化JSON渲染器 and JSON解析器 下面是那里提到的
  • 以编程方式创建 Spring 上下文时如何设置活动配置文件?

    tl dr 如何基于基于注释的配置类创建 Spring 上下文 同时提供活动配置文件 我正在尝试使用带有使用注释指定的配置的类来创建 Spring 上下文 org springframework context ApplicationCon
  • 为什么 std::function 可以使用具有不同返回类型的 lambda 来构造?

    下列编译良好 http melpon org wandbox permlink aO3eLLNUYZ3ucxcx include
  • C - 在多线程进程中 exec 是否必须立即跟随 fork ?

    情况 我有一个用 C 编写的多线程程序 如果其中一个线程分叉 则使用 exec 将子进程替换为另一个线程 并且父进程等待子进程退出 Problem 通过 fork 创建子进程后 有几行代码编译要在以下 exec 命令中使用的参数 假设我是否
  • 有没有办法让 JScience 输出为更“人类友好”的格式?

    当我对 JScience Amount 对象使用 toString 时 我得到如下结果 7 5 4 4E 16 mph 这并不可怕 但我真的希望它输出如下内容 7 5 miles per hour 是否有捷径可寻 edit 只是为了澄清 我
  • 虚拟、覆盖、新建和密封覆盖之间的区别

    我对 OOP 的一些概念很困惑 virtual override new and sealed override 谁能解释一下这些差异吗 我很清楚 如果要使用派生类方法 可以使用override关键字使得基类方法将被派生类覆盖 但我不确定n
  • Python 记录器不工作

    我尝试使用Python中的日志记录来写一些日志 但奇怪的是 只有error将被记录 info无论我设置哪个级别都会被忽略 code import logging import logging handlers if name main lo
  • 如何在Python中获取平面图的外部轮廓?

    获得平面图外部轮廓的最佳方法是什么 蛇算法效果不佳 因为某些平面图太凸 您只需要在查找轮廓时调整灰度图像的阈值以包含灰色虚线路径 由于输入图像的主要部分是白色 因此我们可以选择接近255的阈值 例如230 然后查找轮廓阈值化 您可以使用cv