Skip to content

Commit eeaa141

Browse files
authored
Merge pull request shimat#16 from kimkanghyune/WindowGUISample
WindowGUISample pull request
2 parents 8c9649e + 2748e68 commit eeaa141

File tree

7 files changed

+296
-62
lines changed

7 files changed

+296
-62
lines changed

CameraOpenCV/CameraOpenCV.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
<AssemblyName>CameraOpenCV</AssemblyName>
1212
<DefaultLanguage>en-US</DefaultLanguage>
1313
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
14-
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>
15-
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
14+
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.17763.0</TargetPlatformVersion>
15+
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
1616
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
1717
<FileAlignment>512</FileAlignment>
1818
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

CameraOpenCV/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
[assembly: AssemblyConfiguration("")]
1111
[assembly: AssemblyCompany("Microsoft Corporation")]
1212
[assembly: AssemblyProduct("Windows Samples")]
13-
[assembly: AssemblyCopyright("Copyright © Microsoft Corporation")]
13+
[assembly: AssemblyCopyright("Copyright @Microsoft Corporation")]
1414
[assembly: AssemblyTrademark("")]
1515
[assembly: AssemblyCulture("")]
1616

SamplesCS/Program.cs

Lines changed: 60 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,61 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using OpenCvSharp;
6-
7-
namespace SamplesCS
8-
{
9-
class Program
10-
{
11-
[STAThread]
12-
static void Main(string[] args)
13-
{
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using OpenCvSharp;
6+
7+
namespace SamplesCS
8+
{
9+
class Program
10+
{
11+
[STAThread]
12+
static void Main(string[] args)
13+
{
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-
57-
sample.Run();
58-
}
59-
}
60-
}
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();
58+
sample.Run();
59+
}
60+
}
61+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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 = point2Fs.ToArray();
45+
using var matrix = Cv2.GetPerspectiveTransform(srcPoints, dstPoints);
46+
using var dst = new Mat(new Size(640, 480), MatType.CV_8UC3);
47+
Cv2.WarpPerspective(OriginalImage, dst, matrix, dst.Size());
48+
using var dsts = new Window("dst", dst);
49+
point2Fs.Clear();
50+
}
51+
}
52+
}
53+
}
54+
}

SamplesCS/Samples/SuperResolutionSample.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using OpenCvSharp;
5+
using SamplesCS.Samples;
56

67
namespace SamplesCS
78
{
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
using OpenCvSharp;
2+
using System;
3+
using System.Diagnostics;
4+
5+
namespace SamplesCS.Samples
6+
{
7+
internal class WindowGUISample : ISample
8+
{
9+
10+
Mat WindowImage = new Mat("./Resource.png", ImreadModes.AnyColor); // Set your Resource
11+
12+
public void Run()
13+
{
14+
Windows_Example();
15+
TrackBar_Example();
16+
MouseCallBack_Example();
17+
}
18+
/*
19+
public enum Category
20+
{
21+
Windows,
22+
TrackBar,
23+
MouseCallBack
24+
}
25+
*/
26+
/*
27+
public void Run(Category category)
28+
{
29+
switch (category) {
30+
case Category.Windows:
31+
Windows_Example();
32+
break;
33+
case Category.TrackBar:
34+
TrackBar_Example();
35+
break;
36+
case Category.MouseCallBack:
37+
MouseCallBack_Example();
38+
break;
39+
}
40+
}
41+
*/
42+
43+
public void Windows_Example()
44+
{
45+
var openCloseWindow = new Window("OpenCVWindow", WindowMode.AutoSize, WindowImage);
46+
Debug.WriteLine(Cv2.WaitKey());
47+
}
48+
49+
public void MouseCallBack_Example()
50+
{
51+
using Window foo = new Window("OpenCVWindow", WindowMode.AutoSize, WindowImage);
52+
Cv2.SetMouseCallback(foo.Name, CallbackOpenCVAnnotate);
53+
Cv2.WaitKey();
54+
}
55+
56+
private void CallbackOpenCVAnnotate(MouseEvent e, int x, int y, MouseEvent flags, IntPtr userdata)
57+
{
58+
if (e == MouseEvent.LButtonDown)
59+
{
60+
Debug.WriteLine(x + "," + y + " Down");
61+
}
62+
else if (flags == MouseEvent.FlagLButton)
63+
{
64+
Debug.WriteLine(x + "," + y + " flags");
65+
}
66+
else if (e == MouseEvent.LButtonUp)
67+
{
68+
Debug.WriteLine(x + "," + y + " Up");
69+
}
70+
else if (e == MouseEvent.MouseWheel)
71+
{
72+
Debug.WriteLine(x + "," + y + " Wheel");
73+
}
74+
}
75+
76+
public void TrackBar_Example()
77+
{
78+
using var src = WindowImage;
79+
using var dst = new Mat();
80+
81+
src.CopyTo(dst);
82+
83+
var elementShape = MorphShapes.Rect;
84+
var maxIterations = 10;
85+
86+
var openCloseWindow = new Window("Open/Close", image: dst);
87+
var openCloseTrackbar = openCloseWindow.CreateTrackbar(
88+
trackbarName: "Iterations",
89+
value: 10,
90+
max: maxIterations * 2 + 1,
91+
callback: (pos, obj) =>
92+
{
93+
var n = pos - maxIterations;
94+
var an = n > 0 ? n : -n;
95+
using var element = Cv2.GetStructuringElement(
96+
elementShape,
97+
new Size(an * 2 + 1, an * 2 + 1),
98+
new Point(an, an));
99+
100+
if (n < 0)
101+
{
102+
Cv2.MorphologyEx(src, dst, MorphTypes.Open, element);
103+
}
104+
else
105+
{
106+
Cv2.MorphologyEx(src, dst, MorphTypes.Close, element);
107+
}
108+
109+
Cv2.PutText(dst, (n < 0) ?
110+
string.Format("Open/Erosion [{0}]", elementShape)
111+
: string.Format("Close/Dilation [{0}]", elementShape),
112+
new Point(10, 15), HersheyFonts.HersheyPlain, 1, Scalar.Black);
113+
openCloseWindow.Image = dst;
114+
});
115+
116+
117+
var erodeDilateWindow = new Window("Erode/Dilate", image: dst);
118+
var erodeDilateTrackbar = erodeDilateWindow.CreateTrackbar(
119+
trackbarName: "Iterations",
120+
value: 10,
121+
max: maxIterations * 2 + 1,
122+
callback: (pos, obj) =>
123+
{
124+
var n = pos - maxIterations;
125+
var an = n > 0 ? n : -n;
126+
using var element = Cv2.GetStructuringElement(
127+
elementShape,
128+
new Size(an * 2 + 1, an * 2 + 1),
129+
new Point(an, an));
130+
if (n < 0)
131+
{
132+
Cv2.Erode(src, dst, element);
133+
}
134+
else
135+
{
136+
Cv2.Dilate(src, dst, element);
137+
}
138+
139+
Cv2.PutText(dst, (n < 0) ?
140+
string.Format("Erode[{0}]", elementShape) :
141+
string.Format("Dilate[{0}]", elementShape),
142+
new Point(10, 15), HersheyFonts.HersheyPlain, 1, Scalar.Black);
143+
erodeDilateWindow.Image = dst;
144+
});
145+
146+
147+
for (; ; )
148+
{
149+
var key = Cv2.WaitKey();
150+
151+
if ((char)key == 27) // ESC
152+
break;
153+
154+
switch ((char)key)
155+
{
156+
case 'e':
157+
elementShape = MorphShapes.Ellipse;
158+
break;
159+
case 'r':
160+
elementShape = MorphShapes.Rect;
161+
break;
162+
case 'c':
163+
elementShape = MorphShapes.Cross;
164+
break;
165+
}
166+
}
167+
168+
openCloseWindow.Dispose();
169+
erodeDilateWindow.Dispose();
170+
}
171+
172+
}
173+
}

0 commit comments

Comments
 (0)