如何使用函数“warpAffine”来warpAffine我要处理的任何Mat?不仅是(uchar)img?

时间:2012-11-06 08:11:22

标签: opencv

当我使用函数“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() );

0 个答案:

没有答案