|
| 1 | +program WarpAffine_Test; |
| 2 | + |
| 3 | +{$APPTYPE CONSOLE} |
| 4 | +{$R *.res} |
| 5 | + |
| 6 | +uses |
| 7 | + System.SysUtils, |
| 8 | + cv.opencv, |
| 9 | + cv.resource; |
| 10 | + |
| 11 | +const |
| 12 | + intput_file = OpenCVData + 'lena.jpg'; |
| 13 | + |
| 14 | +var |
| 15 | + srcTri: TAffineTransformPoints; |
| 16 | + dstTri: TAffineTransformPoints; |
| 17 | + |
| 18 | +begin |
| 19 | + try |
| 20 | + if not FileExists(intput_file) then |
| 21 | + begin |
| 22 | + Writeln('Could not open or find the image <' + intput_file + '>'); |
| 23 | + Halt; |
| 24 | + end; |
| 25 | + var |
| 26 | + src: TMat := imread(intput_file); |
| 27 | + |
| 28 | + srcTri[0] := Point2f(0, 0); |
| 29 | + srcTri[1] := Point2f(src.cols - 1, 0); |
| 30 | + srcTri[2] := Point2f(0, src.rows - 1); |
| 31 | + |
| 32 | + dstTri[0] := Point2f(0, src.rows * 0.33); |
| 33 | + dstTri[1] := Point2f(src.cols * 0.85, src.rows * 0.25); |
| 34 | + dstTri[2] := Point2f(src.cols * 0.15, src.rows * 0.7); |
| 35 | + var |
| 36 | + warp_mat: TMat := getAffineTransform(srcTri, dstTri); |
| 37 | + var |
| 38 | + warp_dst: TMat := TMat.zeros(src.rows, src.cols, src.&type()); |
| 39 | + warpAffine(src, warp_dst, warp_mat, warp_dst.size); |
| 40 | + var |
| 41 | + center: TPoint := Point(warp_dst.cols div 2, warp_dst.rows div 2); |
| 42 | + var |
| 43 | + angle: double := -50.0; |
| 44 | + var |
| 45 | + scale: double := 0.6; |
| 46 | + var |
| 47 | + center2f: TPoint2f; |
| 48 | + center2f.x := center.x; |
| 49 | + center2f.y := center.y; |
| 50 | + var |
| 51 | + rot_mat: TMat := getRotationMatrix2D(center2f, angle, scale); |
| 52 | + var |
| 53 | + warp_rotate_dst: TMat; |
| 54 | + warpAffine(warp_dst, warp_rotate_dst, rot_mat, warp_dst.size); |
| 55 | + imshow('Source image', src); |
| 56 | + imshow('Warp', warp_dst); |
| 57 | + imshow('Warp + Rotate', warp_rotate_dst); |
| 58 | + waitKey(); |
| 59 | + except |
| 60 | + on E: Exception do |
| 61 | + Writeln(E.ClassName, ': ', E.Message); |
| 62 | + end; |
| 63 | + |
| 64 | +end. |
0 commit comments