python - 单应性方向错误
问题描述
我正在尝试使用 opencv cv.findChessboardCorners
,cv.findHomography
并cv.warpPerspective
在我的视频源中找到一个棋盘并以原始视角显示它。
我的问题是结果有时是相反的。棋盘显示正确,透视也正确,但是单应性倒置(可以在2.图中看到,绘制的关键点颜色不正确)
我认为这是因为棋盘没有方向,即如果我翻转它,它是相同的。但我不知道如何解决这个问题,因为它似乎是棋盘固有的。
- 为什么会发生这种情况(似乎是“随机的”)?
- 是否可以设置 warpedPerspective 的方向,使其始终“单向”?
- 我该怎么做才能使单应性总是在一个方向上注册?(我可以假设它实际上永远不会在实际的相机馈送中颠倒)
第一个是正确的,第二个是轻微移动的,方向是翻转的
这是我写的部分代码:
# checkerboard is a uint8 array that i created, corner_count is the tuple with patternSize
_, self.cb_corners = cv.findChessboardCorners(checkerboard, corner_count)
found_board, corners = cv.findChessboardCorners(
image=frame,
patternSize=self.corner_count,
flags=cv.CALIB_CB_FAST_CHECK +
cv.CALIB_CB_NORMALIZE_IMAGE +
cv.CALIB_CB_ADAPTIVE_THRESH)
if found_board:
retval, mask = cv.findHomography(self.cb_corners, corners)
dst = cv.warpPerspective(frame, self.homography, (1920, 1080))
cv.imshow("dst", dst)
解决方案
推荐阅读
- php - 没有为 [mail] Laravel 8 定义提示路径
- python - 从包文件python bagpy中获取jpg图像
- docker - docker容器中的.net core rest api未运行
- airflow - 如何以表格格式为特定所有者导出最新的气流 dag 和任务状态
- flutter - Flutter IOS & ANDROID Widgets 实现
- c# - C# 中的日期时间结构。为什么 DateTime 用作创建属性“public DateTime Date { get; }”的类型。为什么没有别的。像字符串
- c# - 如何通过 C# 在 Revit 中获取所有参数及其值?
- sql - 带条件sql的左外连接
- c# - 实体类型对应的 CLR 类型不能实例化 Table-per-type
- javascript - TypeError,但不是在 React 返回函数中