如何使用“cv2.perspectiveTransform”在Python OpenCV中的一组点上应用单应性?

2023-12-24

我想将单应性应用于以下几点:

array([[-7.4894,  1.8873],
   [-7.4973,  1.8543],
   [-7.5375,  1.6725],
   [-7.5681,  1.522 ],
   [-7.5961,  1.371 ],
   [-7.6252,  1.2013],
   [-7.6504,  1.031 ],
   [-7.667 ,  0.8985],
   [-7.6817,  0.7657],
   [-7.6954,  0.613 ],
   [-7.7054,  0.4786],
   [-7.7124,  0.3452],
   [-7.7182,  0.1931],
   [-7.7215,  0.0866],
   [-7.7716,  0.0872],
   [-7.7715,  0.0929],
   [-7.7651,  0.2884],
   [-7.7587,  0.4269],
   [-7.7528,  0.5233],
   [-7.7418,  0.6616],
   [-7.7275,  0.8116],
   [-7.7048,  1.0032],
   [-7.6916,  1.0988],
   [-7.6686,  1.2478],
   [-7.6352,  1.4379],
   [-7.6091,  1.5741],
   [-7.5784,  1.7219],
   [-7.538 ,  1.8995],
   [-7.4894,  1.8873]], dtype=float32)

我的相机单应性矩阵是这样的:

array([[ 3.9643041e-04,  6.5913662e-07,  3.1965813e-03],
       [ 7.4297395e-07, -3.9652368e-04, -4.4492882e-04],
       [-9.3076696e-06, -3.5773560e-06,  1.0000000e+00]], dtype=float32)

当我尝试使用 cv2.perspectiveTransform 应用单应性时,出现以下错误:

`cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\matmul.cpp:2270: error: (-215:Assertion failed) scn + 1 == m.cols in function 'cv::perspectiveTransform'`

我怀疑每个点都需要另一个维度。但我不知道如何用 numpy 添加这个维度。

解决这个问题的正确方法是什么?有没有办法确定根本原因?该错误消息对我来说没有多大意义。


确保 pts 形状为(n, 1, 2) or (1,n,2):

 pts = np.float32(pts).reshape(-1,1,2)
 #pts = np.array([pts], np.float32)
 cv2.perspectiveTransform(pts, M)

例如:

pts = np.array([[1,2,],[3,4]], np.float32)
M = np.array([[ 3.9643041e-04,  6.5913662e-07,  3.1965813e-03],
              [ 7.4297395e-07, -3.9652368e-04, -4.4492882e-04],
              [-9.3076696e-06, -3.5773560e-06,  1.0000000e+00]], dtype=np.float32)

## (n, 1, 2)
pts1 = pts.reshape(-1,1,2).astype(np.float32)
dst1 = cv2.perspectiveTransform(pts1, M)

## (1, n, 2)
pts2 = np.array([pts], np.float32)
dst2 = cv2.perspectiveTransform(pts2, M)

Result:

>>> print(pts1)
[[[1. 2.]]

 [[3. 4.]]]
>>> print(dst1)
[[[ 0.00359439 -0.00123725]]

 [[ 0.00438869 -0.00202888]]]
>>> print(pts2)
[[[1. 2.]
  [3. 4.]]]
>>> print(dst2)
[[[ 0.00359439 -0.00123725]
  [ 0.00438869 -0.00202888]]]

这是另一个例子:

如何使用 Flann 匹配之间的关系来确定合理的单应性? https://stackoverflow.com/questions/48205993/how-do-i-use-the-relationships-between-flann-matches-to-determine-a-sensible-hom/48207339#48207339

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

如何使用“cv2.perspectiveTransform”在Python OpenCV中的一组点上应用单应性? 的相关文章

  • 如何为未捕获的异常处理程序编写单元测试

    我有一个函数可以捕获uncaught例外情况 如下 有没有办法编写一个单元测试来执行uncaught exception handler 功能正常 但测试正常退出 import logging def config logger logge
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • numpy:高效执行数组的复杂重塑

    我正在将供应商提供的大型二进制数组读入 2D numpy 数组 tempfid M N load data data numpy fromfile file dirname fid dtype numpy dtype i4 convert
  • 是否有一个包可以维护所有带有符号的货币列表?

    是否有一个 python 包提供所有 或相当完整 货币的列表与符号 如美元的 有优秀的pycountry 贪财的 https github com limist py moneyed and ccy http code google com
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • python 中的 h2o 框架子集

    如何在 python 中对 h2o 框架进行子集化 如果 x 是一个 df 并且 Origin 是一个变量 那么在 pandas 中我们通常可以通过以下方式进行子集化 x x Origin AAF 但使用 h2o 框架会出现以下错误 H2O
  • 在Python中读取tiff标签

    我正在尝试用 Python 读取 tiff 文件的标签 该文件是 RGB 的uint16每个通道的值 我目前正在使用tifffile import tifffile img tifffile imread file tif 然而 img是一
  • 在 Mac OSX 上从 Python 3.6 运行 wine 命令

    我正在尝试用 Python 编写一个打开的脚本wine然后发送代码到wine终端打开一个 exe程序 这 exe程序也是命令驱动的 我可以打开wine 但我无法进一步 import shlex subprocess line usr bin
  • Python“非规范化”unicode 组合字符

    我正在寻找标准化 python 中的一些 unicode 文本 我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的 非规范化 形式 例如如果我有序列u o xaf i e latin small lette
  • NumPy 相当于 Keras 函数 utils.to_categorical

    我有一个使用 Keras 进行机器学习的 Python 脚本 我正在构建 X 和 Y 它们分别是特征和标签 标签的构建方式如下 def main depth 10 nclass 101 skip True output True video
  • Flask 应用程序路由中的多个参数

    烧瓶怎么写app route如果我在 URL 调用中有多个参数 这是我从 AJax 调用的 URL http 0 0 0 0 8888 createcm summary VVV change Feauure 我试图写我的烧瓶app rout
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • 使用 selenium 和 python 来提取 javascript 生成的 HTML?萤火虫?

    这里是Python新手 我遇到的是数据收集问题 我在这个网站上 当我用 Firebug 检查我想要的元素时 它显示了包含我需要的信息的源 然而常规源代码 没有 Firebug 不会给我这个信息 这意味着我也无法通过正常的 selenium
  • 如何通过函数注释指示函数需要函数作为参数,或返回函数?

    您可以使用函数注释 http www python org dev peps pep 3107 在python 3中指示参数和返回值的类型 如下所示 def myfunction name str age int gt str return
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a
  • 将时间添加到日期时间

    我有一个像这样的日期字符串 然后使用strptime 所以就像这样 my time datetime datetime strptime 07 05 15 m d Y 现在我想添加 23 小时 59 分钟my time 我努力了 timed
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • 描述符“join”需要“unicode”对象,但收到“str”

    代码改编自here http wiki geany org howtos convert camelcase from foo bar to Foo Bar def lower case underscore to camel case s

随机推荐

  • 查询多个 AWS 区域中的活动 EC2 实例

    我们可以同时查询多个AWS区域吗 我想通过 AWS CLI 查询来自多个 AWS 区域的数据 例如每个区域中活动的所有 EC2 实例 不 无法在一个设置中设置多个区域 你可以做这样的事情 for region in aws ec2 desc
  • 将路由与 Symfony 中的当前请求进行比较

    对于我的网站导航 我想指示当前页面 如果导航中的每个页面都有自己的路线 是否有办法查看当前请求是否与该路线匹配 就像是 request gt getRoute my route 或者 更一般地说 在 Symfony 中创建站点导航时是否有设
  • 单元测试如何确认已引发异常

    我正在为 C 类编写一个单元测试 我的其中一个测试应该会导致该方法在添加数据时引发异常 我如何使用单元测试来确认异常已被抛出 这取决于您使用的单元测试框架 在all在这种情况下你可以这样做 Test public void MakeItGo
  • 将字符串转换为双精度数是否等于字面量双精度数?

    例如 assert atof 1 2 1 2 不管使用什么浮动 我知道浮点精度并不精确 但它恰恰不精确 所以四舍五入到二进制会产生完全相同的双精度吗 C 标准不保证这一点 源代码中转换浮点文字的语义在 C 2011 草案 N1570 6 4
  • Angular 2 CLI - php 用于索引文件而不是 html 文件

    有没有办法将通过 Angular 2 CLI 创建和提供服务的 Angular 2 应用程序从默认的 html 文件更改为 php 文件 是否有某个地方的设置确定 ngserve 命令充当默认索引文件 MBU 似乎 Angular cli
  • 使用一个大的 INSERT 语句保存许多 Django 对象

    假设您有以下情况 for i in xrange 100000 account Account account foo i account save 显然 这10万INSERTDjango 执行的语句将需要一些时间 如果能够将所有这些结合起
  • 是否可以将类添加到伪元素?

    我想不会 因为这不起作用
  • Hive 分区验证

    我创建了一个分区的配置单元表 我将数据插入到该表中 现在假设我执行一个select 查询使用where那么我如何确保 Hive 查询正在使用分区 假设您的 HIVE 数据分为 3 个分区 并且每个 HDFS 分区包含一个不大于 1 个 HD
  • Android Vision Api - 条码检测如何获取条码类型?

    我正在使用 AndroidGoogle Vision API 并创建了一个标准条形码阅读器 但我想检测读取什么类型 格式的条形码 i e CODE 39 CODE 128 QR Code ETC 有没有办法返回类型 Thanks 因为我没有
  • 修复 Android TV 上控件的焦点

    我花了很多时间来理解为什么它不起作用 但仍然不知道如何修复它 我找到了这个解决方案https github com flutter flutter issues 49783 https github com flutter flutter
  • Visual C# sizeMode 固定制表符文本对齐方式

    我正在使用 Visual C 开发一个简单的选项卡式 Web 浏览器 我正在研究选项卡部分 我希望每个选项卡都是固定宽度 问题是 当它设置为固定大小模式时 网页标题中的文本对齐错误 就好像文本从中心开始 向右移动 在左侧留下了巨大的空白 我
  • db2中如何将逗号分隔的列转换为多行

    我有下表 参考文献的数量是可变的 Id FK ID Reference 1 2100 GI2 GI32 2 2344 GI56 我需要以下结果 Id FK ID Reference 1 2100 GI2 2 2100 GI32 3 2344
  • 为什么 self.navigationItem.hidesBackButton 不起作用?

    我有一个UI视图控制器被推到一个UI导航控制器并且当前显示 当我在视图控制器内启动一些异步任务时 我可以设置隐藏后退按钮在 self navigationItem 上YES 并且后退按钮已正确隐藏 任务一完成 我就设定了隐藏后退按钮回到NO
  • WildFly 多个域和 SSL 证书

    我有两个不同的域 example1 com example2 com 每个域都有自己的 SSL 证书 我现在想做的是将两个域用于同一个 WildFly 实例 支持 SSL WildFly 文档指出 我只能引用密钥库中的单个证书 因此 我不能
  • 在 ASP.Net MVC 3 中处理 Ajax 调用的正确方法

    当在 ASP Net MVC 中编码 Ajax 调用时 我们有很多选择来发出调用 在服务器上处理它们以及在客户端上处理成功和失败 有些事情显然有正确的答案 但我一直无法找到明确的指导 那么 端到端的ajax调用的正确方法是什么 包括 将 u
  • MVC3下如何给JavaScript赋值

    如何在MVC3 Razor下分配JavaScript值 我不确定它是否会起作用 谢谢你 var populate false if Session TechList null populate true 这也将起作用 if Session
  • 将点转换为经纬度

    我想知道如何获取地图点击事件坐标经纬度 这是我的代码 map on click function evt var element popup getElement var coordinate evt coordinate var latL
  • 无法导入 tweepy 模块

    我是安装新 python 模块的新手 我使用 pip install tweepy 安装了 tweepy 安装成功 并在 Lib site packages 中创建了 2 个文件夹 tweepy 和 tweepy 3 3 0 dist in
  • 创建 Matlab 运行线快捷方式(如 R)

    R 有一个很棒的快捷方式 可以运行光标当前所在的行 然后将光标移动到下一行 cmd return 在 matlab 中 您必须突出显示该行 然后运行突出显示的部分 shift F7 有没有办法创建 类似 R 的运行线快捷方式 我正在使用 O
  • 如何使用“cv2.perspectiveTransform”在Python OpenCV中的一组点上应用单应性?

    我想将单应性应用于以下几点 array 7 4894 1 8873 7 4973 1 8543 7 5375 1 6725 7 5681 1 522 7 5961 1 371 7 6252 1 2013 7 6504 1 031 7 667