2

当我使用函数“warpAffine”处理 CV_32S Mat 或其他一些函数时,它会出错。我发现:也许,“warpAffine”只能处理垫子,对吗?如果没有,我怎么能 warpAffine 其他类型的垫子?谢谢!

这里,如果 src 不是 uchar 类型,就会报错。

Mat src= Mat::zeros( 50, 50, CV_32S  );
Mat warp_dst= Mat::zeros( src.rows, (int)src.cols*1.41421356+1,  CV_32S  );
    for (int i = 0; i < 50; i++)   
        for (int j = 0; j < 50; j++)
        {
            (int)src.at<int>(i,j) =i*j;
            cout << (int)src.at<int>(i,j) <<endl;
        }
    srcTri[0] = Point2f( 0.0,0.0 );
    srcTri[1] = Point2f( src.cols*1.0 - 1, 0 );
    srcTri[2] = Point2f( 0, src.rows*1.0 - 1 );
    dstTri[0] = Point2f( src.cols*0.0, src.rows*0.0 );
    dstTri[1] = Point2f( src.cols*1.0-1, src.rows*0.0 );
    dstTri[2] = Point2f( src.cols*0.41421356-1, src.rows*1.0-1 );
warp_mat = getAffineTransform( srcTri, dstTri );
warpAffine( src, warp_dst, warp_mat, warp_dst.size() );
4

0 回答 0