我想在一些单独的(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'通道,但是第三个通道会是什么,不同的行意味着什么?在
Python上的OpenCV通常需要表单中的点
这在documentation for ^{} 中并不清楚,但在其他使用点的函数(如^{} )的文档中更清楚,其中它们提到坐标位于不同的通道上:
变换也可以在3D中使用(使用
4x4
透视变换矩阵),这样就可以解释在cv2.transform()
中使用两个-或三个通道阵列的能力。在相关问题 更多 >
编程相关推荐