gpt4 book ai didi

Python Opencv 透视变换()

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:39 25 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 对整个图像应用透视变换。为此,我首先根据我选择的点计算初始变换,然后我尝试变换图像角并平移它们以获得最终的最佳变换。我成功地获得了转换,但随后应用 cv2.perspectiveTransform() 函数总是抛出此错误:

OpenCV Error: Assertion failed (scn + 1 == m.cols && (depth == CV_32F || depth == CV_64F)) in perspectiveTransform, file /tmp/opencv-PEaA0A/opencv-2.4.9/modules/core/src/matmul.cpp, line 1936

我提供给函数的两个 numpy 数组都是 float64 dtype,所以我假设错误来自 scn + 1 == m.cols。这是我的代码的快照:

initTransform = cv2.getPerspectiveTransform(pointsIn,pointsOut)
imgCorners = np.array([[0,0],[self.image.size/float(self.image.shape[0]),0]],dtype=np.float64)
outputCorners = cv2.perspectiveTransform(corners,initTransform)

感谢您的帮助!

最佳答案

试试下面的代码,perspectiveTransform的第一个参数是一个Mat对象,对应numpy中的3个dim数组:

import cv2
import numpy as np

w, h = 512, 512
src = np.array(
[[0, 0], [w - 1, 0], [w - 1, h - 1], [0, h - 1]], dtype=np.float32)
dst = np.array(
[[300, 350], [800, 300], [900, 923], [161, 923]], dtype=np.float32)

m = cv2.getPerspectiveTransform(src, dst)
result = cv2.perspectiveTransform(src[None, :, :], m)

关于Python Opencv 透视变换(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com