如何使用perspectiveTransform
函数?
当运行我的代码时,会产生以下异常:
OpenCV错误:在透视变换中断言失败(scn + 1 == m.cols && (depth == CV_32F || depth == CV_64F)),文件 /Users/donbe/Documents/opencv/opencv/modules/core/src/matmul.cpp, 第1916行
谁能帮助我?
我的代码如下:
Point2f srcTri[4];
Point2f dstTri[4];
Mat warp_mat;
Mat src;
/// Load the image
src = imread( argv[1], 1 );
srcTri[0] = Point2f(0,0);
srcTri[1] = Point2f(src.cols,0);
srcTri[2] = Point2f(src.cols,src.rows);
srcTri[3] = Point2f(0,src.rows);
dstTri[0] = Point2f(0,0);
dstTri[1] = Point2f(src.cols/2,0);
dstTri[2] = Point2f(src.cols/2,src.rows);
dstTri[3] = Point2f(0,src.rows);
warp_mat = getPerspectiveTransform(srcTri, dstTri);
Mat warp_dst(src.size(), src.type());
//There will produce a exception.
perspectiveTransform(src, warp_dst, warp_mat);
namedWindow( "Warp", CV_WINDOW_AUTOSIZE );
imshow( "Warp", warp_dst );
waitKey(0);
return 0;
x
。因此,这个方法可以解决问题:y=cv2.perspectiveTransform(x[np.newaxis], H)[0]
。 - Benh,w = img1.shape
pts = np.float32([[0,0],[0,h-1],[w-1,h-1],[w-1,0]]).reshape(-1,1,2)
dst = cv2.perspectiveTransform(pts,M)
- jugi