相关疑难解决方法(0)

不能使cv.transform正常工作

我想在某些单独的(x,y)点上使用与在cv2.warpAffine图像上使用的相同的仿射矩阵M。看来cv2.transform是要走的路。当我尝试发送Nx2的点矩阵时,我感到很沮丧(

   src = np.array([
        [x1,y1],[x2,y2],[x3,y3],[x4,y4]],  dtype = "float32")
    print('source shape '+str(src.shape))
    dst=cv2.transform(src,M)

cv2.error: /home/jeremy/sw/opencv-3.1.0/modules/core/src/matmul.cpp:1947: error: (-215) scn == m.cols || scn + 1 == m.cols in function transform
Run Code Online (Sandbox Code Playgroud)

我可以使用numpy算术获得所需的转换:

    dst = np.dot(src,M[:,0:2]) +M[:,2]
    print('dest:{}'.format(dst))
Run Code Online (Sandbox Code Playgroud)

但是想了解发生了什么。文档说cv2.transform想要的通道数等于M中的列数,但我不清楚通道是什么-也许是'x'通道和'y'通道,但是第三个通道是,不同的行表示什么?

python opencv numpy affinetransform

5
推荐指数
1
解决办法
1901
查看次数

cv2.perspectiveTransform()不接受单应性矩阵

以下是bookhomography-example-1.jpgbookhomography-example-2.jpg流行的OpenCV博文约单应。

我可以做单应性和扭曲图像,但是当我尝试使用或时,hh[0]不起作用。我也尝试过将2D数组转换为元组的元组,但是没有任何变化。这可能很简单,但我无法弄清楚。cv2.perspectiveTransform(pts, h)cv2.perspectiveTransform(pts, h[0])h[0]

错误信息:

追溯(最近一次通话):

T_dst = cv2.perspectiveTransform(pts_dst,h)中的文件“ bookhomography stackexchange v00.py”,第36行,TypeError:m不是数字元组

注:设置FalseTrue诱发失败。两条变换线之一是方向错误,但均会失败。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

import numpy as np
import matplotlib.pyplot as plt
import cv2

im_src = cv2.imread("bookhomography-example-2.jpg")
im_dst = cv2.imread("bookhomography-example-1.jpg")

im_srcrgb = cv2.cvtColor(im_src, cv2.COLOR_BGR2RGB)
im_dstrgb = cv2.cvtColor(im_dst, cv2.COLOR_BGR2RGB)

pts_src = np.float32([52, 376, 240, 528, 413, 291, 217, 266]).reshape(4, -1)
pts_dst = np.float32([56, 478, 387, 497, 376, 124, 148, 218]).reshape(4, -1)

h       = cv2.findHomography(pts_src, …
Run Code Online (Sandbox Code Playgroud)

opencv python-2.7 cv2

2
推荐指数
1
解决办法
1963
查看次数

需要帮助来理解 cv2.unactorPoints() 的错误

我正在尝试使用 OpenCV Python 中的结构光对投影仪和相机中的点进行三角测量。在此过程中,我有一个在相机和投影仪之间一对一匹配的元组列表。我将其传递给 cv2.un DistortedPoints() ,如下所示:

camera_normalizedPoints = cv2.undistortPoints(camera_points, camera_K, camera_d)

但是,python 抛出以下错误,我无法理解该错误的含义。

camera_normalizedPoints = cv2.undistortPoints(camera_points, camera_K, camera_d) cv2.error: /home/base/opencv_build/opencv/modules/imgproc/src/undistort.cpp:312: error: (-215) CV_IS_MAT(_src) && CV_IS_MAT(_dst) && (_src->rows == 1 || _src->cols == 1) && (_dst->rows == 1 || _dst->cols == 1) && _src->cols + _src->rows - 1 == _dst->rows + _dst->cols - 1 && (CV_MAT_TYPE(_src->type) == CV_32FC2 || CV_MAT_TYPE(_src->type) == CV_64FC2) && (CV_MAT_TYPE(_dst->type) == CV_32FC2 || CV_MAT_TYPE(_dst->type) == CV_64FC2) in function cvUndistortPoints

任何帮助是极大的赞赏。

谢谢。

python opencv computer-vision triangulation

2
推荐指数
1
解决办法
3568
查看次数