Skip to content

Commit 881bf9d

Browse files
committed
PerspectiveTransformSample Add
1 parent 57ba134 commit 881bf9d

File tree

3 files changed

+104
-42
lines changed

3 files changed

+104
-42
lines changed

SamplesCS/Program.cs

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -12,48 +12,49 @@ class Program
1212
static void Main(string[] args)
1313
{
1414
ISample sample =
15-
//new ArucoSample();
16-
//new BgSubtractorMOG();
17-
//new BinarizerSample();
18-
//new BRISKSample();
19-
//new CaffeSample();
20-
//new ClaheSample();
21-
//new ConnectedComponentsSample();
22-
//new DFT();
23-
new DrawBestMatchRectangle();
24-
//new FaceDetection();
25-
//new FaceDetectionDNN();
26-
//new FASTSample();
27-
//new FlannSample();
28-
//new FREAKSample();
29-
//new HandPose();
30-
//new HistSample();
31-
//new HOGSample();
32-
//new HoughLinesSample();
33-
//new KAZESample2();
34-
//new KAZESample();
35-
//new MatOperations();
36-
//new MatToBitmap();
37-
//new MDS();
38-
//new MSERSample();
39-
//new NormalArrayOperations();
40-
//new PhotoMethods();
41-
//new MergeSplitSample();
42-
//new MorphologySample();
43-
//new PixelAccess();
44-
//new Pose();
45-
//new SeamlessClone();
46-
//new SiftSurfSample();
47-
//new SimpleBlobDetectorSample();
48-
//new SolveEquation();
49-
//new StarDetectorSample();
50-
//new Stitching();
51-
//new Subdiv2DSample();
52-
//new SuperResolutionSample();
53-
//new SVMSample();
54-
//new VideoWriterSample();
55-
//new VideoCaptureSample();
56-
//new WindowGUISample();
15+
//new ArucoSample();
16+
//new BgSubtractorMOG();
17+
//new BinarizerSample();
18+
//new BRISKSample();
19+
//new CaffeSample();
20+
//new ClaheSample();
21+
//new ConnectedComponentsSample();
22+
//new DFT();
23+
//new DrawBestMatchRectangle();
24+
//new FaceDetection();
25+
//new FaceDetectionDNN();
26+
new FASTSample();
27+
//new FlannSample();
28+
//new FREAKSample();
29+
//new HandPose();
30+
//new HistSample();
31+
//new HOGSample();
32+
//new HoughLinesSample();
33+
//new KAZESample2();
34+
//new KAZESample();
35+
//new MatOperations();
36+
//new MatToBitmap();
37+
//new MDS();
38+
//new MSERSample();
39+
//new NormalArrayOperations();
40+
//new PerspectiveTransformSample();
41+
//new PhotoMethods();
42+
//new MergeSplitSample();
43+
//new MorphologySample();
44+
//new PixelAccess();
45+
//new Pose();
46+
//new SeamlessClone();
47+
//new SiftSurfSample();
48+
//new SimpleBlobDetectorSample();
49+
//new SolveEquation();
50+
//new StarDetectorSample();
51+
//new Stitching();
52+
//new Subdiv2DSample();
53+
//new SuperResolutionSample();
54+
//new SVMSample();
55+
//new VideoWriterSample();
56+
//new VideoCaptureSample();
57+
//new WindowGUISample();
5758
sample.Run();
5859
}
5960
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using OpenCvSharp;
2+
using System;
3+
using System.Collections.Generic;
4+
5+
namespace SamplesCS.Samples
6+
{
7+
public class PerspectiveTransformSample : ISample
8+
{
9+
List<Point2f> point2Fs = new List<Point2f>();
10+
11+
Point2f[] srcPoints = new Point2f[] {
12+
new Point2f(0, 0),
13+
new Point2f(0, 0),
14+
new Point2f(0, 0),
15+
new Point2f(0, 0),
16+
};
17+
18+
Point2f[] dstPoints = new Point2f[] {
19+
new Point2f(0, 0),
20+
new Point2f(0, 480),
21+
new Point2f(640, 480),
22+
new Point2f(640, 0),
23+
};
24+
25+
Mat OriginalImage;
26+
27+
//PerspectiveTransform
28+
public void Run()
29+
{
30+
OriginalImage = new Mat("./Resource.png", ImreadModes.AnyColor); // Your Resource
31+
using var Window = new Window("result", OriginalImage);
32+
33+
Cv2.SetMouseCallback(Window.Name, CallbackOpenCVAnnotate);
34+
Window.WaitKey();
35+
}
36+
37+
private void CallbackOpenCVAnnotate(MouseEvent e, int x, int y, MouseEvent flags, IntPtr userdata)
38+
{
39+
if (e == MouseEvent.LButtonDown)
40+
{
41+
point2Fs.Add(new Point2f(x, y));
42+
if (point2Fs.Count == 4)
43+
{
44+
srcPoints = new Point2f[]
45+
{
46+
point2Fs[0],
47+
point2Fs[1],
48+
point2Fs[2],
49+
point2Fs[3]
50+
};
51+
using var matrix = Cv2.GetPerspectiveTransform(srcPoints, dstPoints);
52+
using var dst = new Mat(new Size(640, 480), MatType.CV_8UC3);
53+
Cv2.WarpPerspective(OriginalImage, dst, matrix, dst.Size());
54+
using var dsts = new Window("dst", dst);
55+
point2Fs.Clear();
56+
}
57+
}
58+
}
59+
}
60+
}

SamplesCS/SamplesCS.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
<Compile Include="Samples\FaceDetectionDNN.cs" />
128128
<Compile Include="Samples\DrawBestMatch.cs" />
129129
<Compile Include="Samples\HandPose.cs" />
130+
<Compile Include="Samples\PerspectiveTransformSample.cs" />
130131
<Compile Include="Samples\PhotoMethods.cs" />
131132
<Compile Include="Samples\Pose.cs" />
132133
<Compile Include="Samples\SeamlessClone.cs" />

0 commit comments

Comments
 (0)