找不到cv.变换

2024-10-01 09:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在一些单独的(x,y)点上使用相同的仿射矩阵M,就像我在cv2.warpf仿射图像上使用的一样。看来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

我可以用numpy算法得到我想要的转换:

^{pr2}$

但我想知道发生了什么事。文档说cv2.transform需要一个等于M中列数的通道数,但我不清楚通道是什么-可能是'x'通道和'y'通道,但是第三个通道会是什么,不同的行意味着什么?在


Tags: 图像srcnptransform矩阵errorarraycv2
1条回答
网友
1楼 · 发布于 2024-10-01 09:36:07

Python上的OpenCV通常需要表单中的点

np.array([ [[x1, y1]], ..., [[xn, yn]] ])

这在documentation for ^{}中并不清楚,但在其他使用点的函数(如^{})的文档中更清楚,其中它们提到坐标位于不同的通道上:

src – input two-channel or three-channel floating-point array

变换也可以在3D中使用(使用4x4透视变换矩阵),这样就可以解释在cv2.transform()中使用两个-三个通道阵列的能力。在

相关问题 更多 >