opencv warpPerspective 的替代方案

2024-02-07

我正在使用 opencv warpPerspective() 函数来扭曲图像中找到的 countour 以查找轮廓,我正在使用 findContours()。

如下图所示:

但是 warpPerspective() 函数需要“更多时间”才能扭曲到完整图像,是否有任何替代方法可以将图像中的对象扭曲为完整图像,如图所示。 或者遍历会有帮助吗?但这很难做到,这样我就可以减少 warpPerspective() 函数所花费的时间。


你可以尝试做rotation https://en.wikipedia.org/wiki/Rotation_matrix and 翻译 https://en.wikipedia.org/wiki/Translation_(geometry)矩阵(或旋转平移矩阵,两者的组合),可以根据需要扭曲图像。函数 warpPerspective() 使用类似的方法,因此您基本上将有机会查看函数内部。

方法是:

  1. 您计算矩阵,然后乘以高度和宽度 原始图像来查找输出图像的尺寸。

  2. 遍历原始图像中的所有像素并将它们相乘 矩阵 R 的 (x,y) 坐标 (旋转/平移/旋转平移矩阵)以获得 输出图像上的坐标 (xo,yo)。

  3. 在每个计算的坐标 (xo,yo) 上分配值 对应的原始图像坐标(x,y)。

  4. 使用中值滤波器/双线性/双三次/等进行插值。方法如 有时输出图像上可能会留下空点

但是,如果您使用 Python,您的实现可能比 warpPerspective() 还要慢,因此您可以考虑使用 C++。另一件事是 OpenCV 使用 C++ 编译器,我非常确定 OpenCV 中 warpPerspective() 的实现非常高效。

所以,我认为你可以绕过 warpPerspective(),但是,我不确定你是否可以比 OpenCV 更快地完成它,而无需任何增强(例如 GPU、强大的 CPU 等):)

祝你好运!

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

opencv warpPerspective 的替代方案 的相关文章

  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • jQuery $(document).ready 函数的缩写形式

    我使用了很多 jQuery 所以我必须不断地输入 document ready函数来放置 jQuery 代码 该函数有更短的形式吗 允许使用以下三种语法 Syntax 1 document ready function Syntax 2 r
  • MySQL WHERE 过程中的条件被忽略

    我正在尝试制定一个带有参数的程序 但是当我在一个WHERE情况就好像从未存在过一样 他们只是被忽视了 DELIMITER DROP PROCEDURE IF EXISTS p CREATE PROCEDURE p IN player TEX
  • WPF如何将mousedown(命令/操作)绑定到标签

    我可以找到很多到按钮的命令鼠标绑定 但是如果我想将 mousedown 事件绑定到绑定 MVVM 模式 怎么办 我找不到答案 可能是我看不到的很小的东西 但有人可以帮助我吗 xaml
  • SQL Server 2008 R2 中的高效分页

    我想编写一个执行以下操作的存储过程 返回匹配查询的记录数 以确定向用户显示的页数 返回另一个记录集 其中包含当前页面查询中的某个记录子集 从我在 StackOverflow 上发现的另一个问题 抱歉 我丢失了链接 我发现我们是这样进行分页的
  • 在哪里可以找到有关 SharePoint 的优质编程资源? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直试图找到一本书籍或 Web 参考资料 让我更好地了解如何构建 测试 ASP NET 页面 控件和 Web 部件并将其部署到 Shar
  • 防止移动 unique_ptr C++11

    有什么方法可以阻止用户显式获取唯一指针的所有权 std move Make it const The unique ptr移动构造函数需要一个非常量右值引用 因此不能用 a 调用const object const unique ptr
  • Django ORM 中 select_lated 和 prefetch_lated 有什么区别?

    在 Django 文档中 select related https docs djangoproject com en stable ref models querysets select related 遵循 外键关系 在执行查询时选择其
  • 在 Python 中缩小和合并 PDF

    我正在尝试将两个 A4 PDF 页面缩小并合并为一个 A4 页面 这样如果我有的话 p1 p2 我会得到 p1 p2 作为一个新的 PDF 其中一页有两个 A5 大小的页面 类似于在纸上每页打印两页的方式 我调查过pypdf https p
  • 当文本框中未填充任何内容时,将 mvvm WPF 中的属性设置为 null

    我实现了一个文本框 它绑定到一个视图模型 例如 我在文本框中默认填写 100 但如果我将其更改为 10 则该属性始终设置正确 但是当我删除所有数字时 我希望该属性设置为空 但它只是在没有填写任何内容时不设置该值 他只是保留最后一个值 这是我
  • Django 从数据库自动完成

    我有一个这样的模型 class Baslik models Model user models ForeignKey User null True blank True title models CharField max length 5
  • 为什么 getenv() 返回非常量字符串

    我正在阅读以下文档std getenv 功能于cppreference com http en cppreference com w cpp utility program getenv它说 修改 getenv 返回的字符串会调用未定义的行
  • 什么是多字节字符集?

    术语 多字节 是指其字符可以 但不必 宽于 1 个字节的字符集 例如 UTF 8 还是指在任何情况下都宽于 1 个字节的字符集 例如 UTF 16 换句话说 如果有人谈论多字节字符集 这意味着什么 该术语含糊不清 但在我的国际化工作中 我们
  • 将多列合并为一列

    我有一个数据集如下 GN Datum Land AG GKV MTCR GKV NSGI GKV NSGII GKV WA GKV ML GKV Wert 8 11693 2012 01 05 Kenia 5A001f 159700 9 1
  • 我将如何改进这个充当规范的 7 行 Linq 查询?

    顶部的 BigQuery 获取一组产品和嵌套的相关表 然后 我在规范模式上进行了一次糟糕的尝试应用过滤 这是过滤器代码 查询中有三个表 我想通过嵌套在底部查询中的值来过滤顶部查询 就像我说的 这目前产生了我们想要的结果 然而 Contain
  • 如何提供一系列交错线程来显示代码中断并且不提供完美的同步?

    我知道下面的代码是做什么的 我知道为什么它是一个损坏的同步代码 因为它只有一个条件变量 而我们需要两个 但我不知道如何提供一系列交错线程来显示它不起作用 您能举例说明为什么此代码不起作用吗 1 cond t cond PTHREAD CON
  • MySQL 错误 #1005(代码 150)

    我尝试过创建此表 但我尝试过的任何方法都无法从 FK 中实现 CREATE TABLE tb AutSituacao id int 11 NOT NULL AUTO INCREMENT Nome varchar 50 CHARACTER S
  • 如何将一个项目添加为另一个项目的依赖项?

    有两个独立的项目 myWarProject and MyEjbProject 所以当我构建myWarProject我需要安装MyEjbProject到本地存储库 这样我就可以在 myWarProject 中定义为依赖项并成功打包 myWar
  • 在 C 语言的 for 循环条件中调用 strlen() 的最佳替代方法是什么?

    我读到在 for 循环条件中调用 strlen 是不好的做法 因为这是一个 O N 操作 然而 在寻找替代方案时 我看到两种可能的解决方案 int len strlen somestring for int i 0 i lt len i o
  • 使用 jsoup 或 gquery 获取纯 XML

    我最近想知道有没有一个好的 Java 中 XML 操作库 一个不错的 Java XML DOM 实用程序 https stackoverflow com questions 6996013 a nice java xml dom utili
  • opencv warpPerspective 的替代方案

    我正在使用 opencv warpPerspective 函数来扭曲图像中找到的 countour 以查找轮廓 我正在使用 findContours 如下图所示 但是 warpPerspective 函数需要 更多时间 才能扭曲到完整图像