関数「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() );