从头开始实现 cv2.warpPerspective()

2024-01-03

我正在使用 OpenCV 函数进行一些实验cv2.warpPerspective当我决定从头开始编码以更好地理解它的管道时。尽管我(希望)遵循了每一个理论步骤,但似乎我仍然遗漏了一些东西,并且我正在努力理解什么。请你帮助我好吗?

SRC 图像(左)和 True DST 图像(右) https://i.stack.imgur.com/BzZ2j.png

cv2.warpPerspective 的输出与真实 DST 重叠 https://i.stack.imgur.com/JQrBf.png

# Invert the homography SRC->DST to DST->SRC
hinv = np.linalg.inv(h)
src = gray1
dst = np.zeros(gray2.shape)
h, w = src.shape

# Remap back and check the domain
for ox in range(h):
    for oy in range(w):

        # Backproject from DST to SRC
        xw, yw, w = hinv.dot(np.array([ox, oy, 1]).T)

        # cv2.INTER_NEAREST
        x, y = int(xw/w), int(yw/w)

        # Check if it falls in the src domain
        c1 = x >= 0 and y < h
        c2 = y >= 0 and y < w

        if c1 and c2:
            dst[x, y] = src[ox, oy]

cv2.imshow(dst + gray2//2)

我的代码的输出 https://i.stack.imgur.com/QZ5gz.png

PS:输出图像是估计夏令时和真实夏令时的重叠,以更好地突出差异。


您的问题相当于typo。您混淆了坐标的命名。单应性假设(x,y,1)顺序,这将对应于(j,i,1).

只需使用(x, y, 1)在计算中,并且(xw, yw, w)其结果是(然后x,y = xw/w, yw/w). the w当正确表述时,因子反映了数学。

避免索引到.shape。指数不会“说话”。做就是了(height, width) = src.shape[:2]并使用那些。

我建议修复命名方案,或在评论中将其定义在顶部。我建议坚持x,y而不是 i、j、u、v,然后用前缀/后缀扩展它们所在的空间(“src/dst/in/out”)。也许像ox,oy为了迭代,只需xw,yw,w单应性结果,变成x,y通过除法,以及ix,iy (整数化) 中的采样input?然后你可以使用dst[oy, ox] = src[iy, ix]

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

从头开始实现 cv2.warpPerspective() 的相关文章

随机推荐

  • 为 string.Contains 构建表达式树[重复]

    这个问题在这里已经有答案了 我正在努力构建一个表达式树 以便我可以动态地对某些数据进行过滤 我已经想出了这个 但它失败了var lambda line foreach var rule in request Where Rules var
  • 是什么使 Bean 成为 CDI Bean?

    例如 在这个问题的最佳答案中 Java EE 6 javax annotation ManagedBean 与 javax inject Named 与 javax faces ManagedBean https stackoverflow
  • 空类构造函数(样式)

    什么是定义不需要任何构造函数参数的类的 Pythonic 方法 class MyClass class body 或者我们需要一个显式的构造函数吗 IE class MyClass def init pass class body 您的第一
  • 视频缩略图

    我正在开发一个人们可以提交视频链接的网站 然后我就嵌入它 但是 我想获取视频的缩略图而不将视频保存在我的服务器中 这样当我列出视频时 我可以使用缩略图而不是嵌入所有视频 我的服务使用 PHP 假设视频为 SWF 格式 或标签中是否有任何内容
  • CKEditor - 无工具栏

    所以我得到了一个textarea with CKEditor插件 但我只想让它干净 没有任何东西 没有工具栏 没有状态栏或任何栏 这很简单 但我在文档或网络上找不到它 My CKEditor开始于 texto ckeditor skin o
  • 升级到 Swift 3 后,属性“self.delegate”未在 super.init 调用中初始化

    升级到 Swift 3 后 我现在收到此错误 属性 self delegate 未在 super init 调用时初始化 在 NSObject 类上定义 open class NSObject NSObjectProtocol public
  • Android Oreo WebView 在第二次加载后渲染布局太小

    在某些 Android Oreo 设备上 当我第一次在 webview 上加载 url 时 URL 页面会正确加载 但是 当我再次加载 URL 时 页面会缩小 在低于 android oreo 的设备上 页面可以为所有设备正确加载 此外 当
  • VS2008 中“<<”和“++”的运算符优先级优化

    我遇到了一个奇怪的 VS2008 C 问题 看起来运算符优先级没有得到尊重 我的问题是这个的输出是什么 int i 0 std cout lt lt i 0 Not zero zero lt lt i lt lt std endl 通常情况
  • 如何在 WordPress 主题中包含 jQuery?

    我对 WordPress 还很陌生 我正在研究如何将 jQuery 包含到主题中 我将以下函数创建为函数 php theme function load java scripts Load FlexSlider JavaScript tha
  • 在选项卡栏开关上弹出到根导航控制器时出现问题

    尝试模仿 复制内置地址簿 特别是从 电话 应用程序内部编辑联系人或查看现有联系人信息时的行为 当您导航到另一个选项卡时 编辑状态将重置 并弹出 新联系人 或 信息 视图 以便当您返回 联系人 选项卡时 您将返回到根表视图 我使用 setEd
  • 如果没有锚点,则无法使用菜单弹出帮助程序

    我想在操作栏中使用弹出菜单项 当我在活动中使用它时一切正常 但是当我切换到片段时我得到 MenuPopupHelper cannot be used without an anchor 我的片段 Override public boolea
  • Django __str__ 返回非字符串(类型 NoneType)

    我正进入 状态 str returned non string type NoneType 编辑时出错Product模型对象 产品型号 class Product models Model ProductName models CharFi
  • 无法在 Ubuntu 18.04 LTS 上安装 rstanarm

    我无法安装rstanarm on R 3 5 3运行于Ubuntu 18 04 LTS 我使用了以下命令 install packages rstanarm and devtools install github stan dev rsta
  • 如何直接从 R 控制台打开工作目录?

    我怎样才能打开我的getwd 直接从 R 控制台获取文件夹 如果我想查看我最近刚刚导出到那里的东西 这很有用 谷歌搜索没有透露任何信息 我没有能力构建一个函数 如果您确实想要一个文件浏览器 您可以创建一个函数来打开目录 根据您使用的操作系统
  • 导入错误:使用 Azure SDK 时无法导入名称会话

    我正在使用 Azure SDK 运行代码 首先 我通过下载sdkpip install azure 然后我编写运行以下 python 代码 import requests import os make sure you configure
  • Rails Basecamp 风格子域最佳实践

    我的目标是为每个子域拥有单独的用户帐户 在任何情况下 我都不想在子域之间进行异花授粉 我看过了罗比 拉塞尔 http www robbyonrails com articles 2009 01 11 subdomain accounts w
  • 从 url mysql 或 python 中提取模式编号

    我有一堆 url 其中有一个字符串 hotel 4 digit number hotel1234 or slash 4digit html 1234 html 是否有正则表达式可以使用 python 或 mysql 提取 4 位数字 例如
  • 在 AWS Lambda 上使用来自 Python 的 NodeJS 4 脚本

    问题 我有一个在 AWS Lambda 上运行的 Python 脚本 该脚本正在使用subprocess执行 NodeJS 4 脚本 我尝试过什么 subprocess check output my script js 得到非零结果 得到
  • 更改外部变量的值

    我们在 File1 c 中有 int arr 10 在 File2 c 中 extern int arr int main arr 0 10 return 0 这样做可能会出现哪些问题以及为什么 数组不是指针 内存访问将会出错 In Fil
  • 从头开始实现 cv2.warpPerspective()

    我正在使用 OpenCV 函数进行一些实验cv2 warpPerspective当我决定从头开始编码以更好地理解它的管道时 尽管我 希望 遵循了每一个理论步骤 但似乎我仍然遗漏了一些东西 并且我正在努力理解什么 请你帮助我好吗 SRC 图像