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