niobures commited on
Commit
1bfe214
·
verified ·
1 Parent(s): 3f28928

VideoCompensator

Browse files
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ test/test_video_compensator/data/img_1.png filter=lfs diff=lfs merge=lfs -text
37
+ test/test_video_compensator/data/img_2.png filter=lfs diff=lfs merge=lfs -text
38
+ test/test_video_compensator/data/img_3.png filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,353 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Ignore Visual Studio temporary files, build results, and
2
+ ## files generated by popular Visual Studio add-ons.
3
+ ##
4
+ ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5
+
6
+ # User-specific files
7
+ *.rsuser
8
+ *.suo
9
+ *.user
10
+ *.userosscache
11
+ *.sln.docstates
12
+
13
+ # User-specific files (MonoDevelop/Xamarin Studio)
14
+ *.userprefs
15
+
16
+ # Mono auto generated files
17
+ mono_crash.*
18
+
19
+ # Build results
20
+ [Dd]ebug/
21
+ [Dd]ebugPublic/
22
+ [Rr]elease/
23
+ [Rr]eleases/
24
+ x64/
25
+ x86/
26
+ [Aa][Rr][Mm]/
27
+ [Aa][Rr][Mm]64/
28
+ bld/
29
+ [Bb]in/
30
+ [Oo]bj/
31
+ [Ll]og/
32
+ [Ll]ogs/
33
+
34
+ # Visual Studio 2015/2017 cache/options directory
35
+ .vs/
36
+ # Uncomment if you have tasks that create the project's static files in wwwroot
37
+ #wwwroot/
38
+
39
+ # Visual Studio 2017 auto generated files
40
+ Generated\ Files/
41
+
42
+ # MSTest test Results
43
+ [Tt]est[Rr]esult*/
44
+ [Bb]uild[Ll]og.*
45
+
46
+ # NUnit
47
+ *.VisualState.xml
48
+ TestResult.xml
49
+ nunit-*.xml
50
+
51
+ # Build Results of an ATL Project
52
+ [Dd]ebugPS/
53
+ [Rr]eleasePS/
54
+ dlldata.c
55
+
56
+ # Benchmark Results
57
+ BenchmarkDotNet.Artifacts/
58
+
59
+ # .NET Core
60
+ project.lock.json
61
+ project.fragment.lock.json
62
+ artifacts/
63
+
64
+ # StyleCop
65
+ StyleCopReport.xml
66
+
67
+ # Files built by Visual Studio
68
+ *_i.c
69
+ *_p.c
70
+ *_h.h
71
+ *.ilk
72
+ *.meta
73
+ *.obj
74
+ *.iobj
75
+ *.pch
76
+ *.pdb
77
+ *.ipdb
78
+ *.pgc
79
+ *.pgd
80
+ *.rsp
81
+ *.sbr
82
+ *.tlb
83
+ *.tli
84
+ *.tlh
85
+ *.tmp
86
+ *.tmp_proj
87
+ *_wpftmp.csproj
88
+ *.log
89
+ *.vspscc
90
+ *.vssscc
91
+ .builds
92
+ *.pidb
93
+ *.svclog
94
+ *.scc
95
+
96
+ # Chutzpah Test files
97
+ _Chutzpah*
98
+
99
+ # Visual C++ cache files
100
+ ipch/
101
+ *.aps
102
+ *.ncb
103
+ *.opendb
104
+ *.opensdf
105
+ *.sdf
106
+ *.cachefile
107
+ *.VC.db
108
+ *.VC.VC.opendb
109
+
110
+ # Visual Studio profiler
111
+ *.psess
112
+ *.vsp
113
+ *.vspx
114
+ *.sap
115
+
116
+ # Visual Studio Trace Files
117
+ *.e2e
118
+
119
+ # TFS 2012 Local Workspace
120
+ $tf/
121
+
122
+ # Guidance Automation Toolkit
123
+ *.gpState
124
+
125
+ # ReSharper is a .NET coding add-in
126
+ _ReSharper*/
127
+ *.[Rr]e[Ss]harper
128
+ *.DotSettings.user
129
+
130
+ # TeamCity is a build add-in
131
+ _TeamCity*
132
+
133
+ # DotCover is a Code Coverage Tool
134
+ *.dotCover
135
+
136
+ # AxoCover is a Code Coverage Tool
137
+ .axoCover/*
138
+ !.axoCover/settings.json
139
+
140
+ # Coverlet is a free, cross platform Code Coverage Tool
141
+ coverage*[.json, .xml, .info]
142
+
143
+ # Visual Studio code coverage results
144
+ *.coverage
145
+ *.coveragexml
146
+
147
+ # NCrunch
148
+ _NCrunch_*
149
+ .*crunch*.local.xml
150
+ nCrunchTemp_*
151
+
152
+ # MightyMoose
153
+ *.mm.*
154
+ AutoTest.Net/
155
+
156
+ # Web workbench (sass)
157
+ .sass-cache/
158
+
159
+ # Installshield output folder
160
+ [Ee]xpress/
161
+
162
+ # DocProject is a documentation generator add-in
163
+ DocProject/buildhelp/
164
+ DocProject/Help/*.HxT
165
+ DocProject/Help/*.HxC
166
+ DocProject/Help/*.hhc
167
+ DocProject/Help/*.hhk
168
+ DocProject/Help/*.hhp
169
+ DocProject/Help/Html2
170
+ DocProject/Help/html
171
+
172
+ # Click-Once directory
173
+ publish/
174
+
175
+ # Publish Web Output
176
+ *.[Pp]ublish.xml
177
+ *.azurePubxml
178
+ # Note: Comment the next line if you want to checkin your web deploy settings,
179
+ # but database connection strings (with potential passwords) will be unencrypted
180
+ *.pubxml
181
+ *.publishproj
182
+
183
+ # Microsoft Azure Web App publish settings. Comment the next line if you want to
184
+ # checkin your Azure Web App publish settings, but sensitive information contained
185
+ # in these scripts will be unencrypted
186
+ PublishScripts/
187
+
188
+ # NuGet Packages
189
+ *.nupkg
190
+ # NuGet Symbol Packages
191
+ *.snupkg
192
+ # The packages folder can be ignored because of Package Restore
193
+ **/[Pp]ackages/*
194
+ # except build/, which is used as an MSBuild target.
195
+ !**/[Pp]ackages/build/
196
+ # Uncomment if necessary however generally it will be regenerated when needed
197
+ #!**/[Pp]ackages/repositories.config
198
+ # NuGet v3's project.json files produces more ignorable files
199
+ *.nuget.props
200
+ *.nuget.targets
201
+
202
+ # Microsoft Azure Build Output
203
+ csx/
204
+ *.build.csdef
205
+
206
+ # Microsoft Azure Emulator
207
+ ecf/
208
+ rcf/
209
+
210
+ # Windows Store app package directories and files
211
+ AppPackages/
212
+ BundleArtifacts/
213
+ Package.StoreAssociation.xml
214
+ _pkginfo.txt
215
+ *.appx
216
+ *.appxbundle
217
+ *.appxupload
218
+
219
+ # Visual Studio cache files
220
+ # files ending in .cache can be ignored
221
+ *.[Cc]ache
222
+ # but keep track of directories ending in .cache
223
+ !?*.[Cc]ache/
224
+
225
+ # Others
226
+ ClientBin/
227
+ ~$*
228
+ *~
229
+ *.dbmdl
230
+ *.dbproj.schemaview
231
+ *.jfm
232
+ *.pfx
233
+ *.publishsettings
234
+ orleans.codegen.cs
235
+
236
+ # Including strong name files can present a security risk
237
+ # (https://github.com/github/gitignore/pull/2483#issue-259490424)
238
+ #*.snk
239
+
240
+ # Since there are multiple workflows, uncomment next line to ignore bower_components
241
+ # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
242
+ #bower_components/
243
+
244
+ # RIA/Silverlight projects
245
+ Generated_Code/
246
+
247
+ # Backup & report files from converting an old project file
248
+ # to a newer Visual Studio version. Backup files are not needed,
249
+ # because we have git ;-)
250
+ _UpgradeReport_Files/
251
+ Backup*/
252
+ UpgradeLog*.XML
253
+ UpgradeLog*.htm
254
+ ServiceFabricBackup/
255
+ *.rptproj.bak
256
+
257
+ # SQL Server files
258
+ *.mdf
259
+ *.ldf
260
+ *.ndf
261
+
262
+ # Business Intelligence projects
263
+ *.rdl.data
264
+ *.bim.layout
265
+ *.bim_*.settings
266
+ *.rptproj.rsuser
267
+ *- [Bb]ackup.rdl
268
+ *- [Bb]ackup ([0-9]).rdl
269
+ *- [Bb]ackup ([0-9][0-9]).rdl
270
+
271
+ # Microsoft Fakes
272
+ FakesAssemblies/
273
+
274
+ # GhostDoc plugin setting file
275
+ *.GhostDoc.xml
276
+
277
+ # Node.js Tools for Visual Studio
278
+ .ntvs_analysis.dat
279
+ node_modules/
280
+
281
+ # Visual Studio 6 build log
282
+ *.plg
283
+
284
+ # Visual Studio 6 workspace options file
285
+ *.opt
286
+
287
+ # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
288
+ *.vbw
289
+
290
+ # Visual Studio LightSwitch build output
291
+ **/*.HTMLClient/GeneratedArtifacts
292
+ **/*.DesktopClient/GeneratedArtifacts
293
+ **/*.DesktopClient/ModelManifest.xml
294
+ **/*.Server/GeneratedArtifacts
295
+ **/*.Server/ModelManifest.xml
296
+ _Pvt_Extensions
297
+
298
+ # Paket dependency manager
299
+ .paket/paket.exe
300
+ paket-files/
301
+
302
+ # FAKE - F# Make
303
+ .fake/
304
+
305
+ # CodeRush personal settings
306
+ .cr/personal
307
+
308
+ # Python Tools for Visual Studio (PTVS)
309
+ __pycache__/
310
+ *.pyc
311
+
312
+ # Cake - Uncomment if you are using it
313
+ # tools/**
314
+ # !tools/packages.config
315
+
316
+ # Tabs Studio
317
+ *.tss
318
+
319
+ # Telerik's JustMock configuration file
320
+ *.jmconfig
321
+
322
+ # BizTalk build output
323
+ *.btp.cs
324
+ *.btm.cs
325
+ *.odx.cs
326
+ *.xsd.cs
327
+
328
+ # OpenCover UI analysis results
329
+ OpenCover/
330
+
331
+ # Azure Stream Analytics local run output
332
+ ASALocalRun/
333
+
334
+ # MSBuild Binary and Structured Log
335
+ *.binlog
336
+
337
+ # NVidia Nsight GPU debugger configuration file
338
+ *.nvuser
339
+
340
+ # MFractors (Xamarin productivity tool) working folder
341
+ .mfractor/
342
+
343
+ # Local History for Visual Studio
344
+ .localhistory/
345
+
346
+ # BeatPulse healthcheck temp database
347
+ healthchecksdb
348
+
349
+ # Backup folder for Package Reference Convert tool in Visual Studio 2017
350
+ MigrationBackup/
351
+
352
+ # Ionide (cross platform F# VS Code tools) working folder
353
+ .ionide/
README.md ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ # VideoCompensator
2
+ Remove moving object from video to get only a clean background
VideoCompensator.sln ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 
2
+ Microsoft Visual Studio Solution File, Format Version 12.00
3
+ # Visual Studio 15
4
+ VisualStudioVersion = 15.0.28307.960
5
+ MinimumVisualStudioVersion = 10.0.40219.1
6
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_video_compensator", "test\test_video_compensator\vcproj\test_video_compensator.vcxproj", "{C5F0E919-E67E-41FD-8FAE-7464EF283EEF}"
7
+ EndProject
8
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{F193575E-B55C-41E4-8884-737075000437}"
9
+ EndProject
10
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvideo_compensator", "libvideo_compensator\vcproj\VideoCompensator.vcxproj", "{A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}"
11
+ EndProject
12
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_json", "..\..\work\commlib\jsoncpp\makefiles\msvc2017\lib_json.vcxproj", "{1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}"
13
+ EndProject
14
+ Global
15
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
16
+ Debug|x64 = Debug|x64
17
+ Debug|x86 = Debug|x86
18
+ Release|x64 = Release|x64
19
+ Release|x86 = Release|x86
20
+ EndGlobalSection
21
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
22
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Debug|x64.ActiveCfg = Debug|x64
23
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Debug|x64.Build.0 = Debug|x64
24
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Debug|x86.ActiveCfg = Debug|Win32
25
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Debug|x86.Build.0 = Debug|Win32
26
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Release|x64.ActiveCfg = Release|x64
27
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Release|x64.Build.0 = Release|x64
28
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Release|x86.ActiveCfg = Release|Win32
29
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF}.Release|x86.Build.0 = Release|Win32
30
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Debug|x64.ActiveCfg = Debug|x64
31
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Debug|x64.Build.0 = Debug|x64
32
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Debug|x86.ActiveCfg = Debug|Win32
33
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Debug|x86.Build.0 = Debug|Win32
34
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Release|x64.ActiveCfg = Release|x64
35
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Release|x64.Build.0 = Release|x64
36
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Release|x86.ActiveCfg = Release|Win32
37
+ {A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}.Release|x86.Build.0 = Release|Win32
38
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Debug|x64.ActiveCfg = Debug|x64
39
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Debug|x64.Build.0 = Debug|x64
40
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Debug|x86.ActiveCfg = Debug|Win32
41
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Debug|x86.Build.0 = Debug|Win32
42
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Release|x64.ActiveCfg = Release|x64
43
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Release|x64.Build.0 = Release|x64
44
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Release|x86.ActiveCfg = Release|Win32
45
+ {1E6C2C1C-6453-4129-AE3F-0EE8E6599C89}.Release|x86.Build.0 = Release|Win32
46
+ EndGlobalSection
47
+ GlobalSection(SolutionProperties) = preSolution
48
+ HideSolutionNode = FALSE
49
+ EndGlobalSection
50
+ GlobalSection(NestedProjects) = preSolution
51
+ {C5F0E919-E67E-41FD-8FAE-7464EF283EEF} = {F193575E-B55C-41E4-8884-737075000437}
52
+ EndGlobalSection
53
+ GlobalSection(ExtensibilityGlobals) = postSolution
54
+ SolutionGuid = {1DB601F0-8479-4D4E-9417-85960FF780FE}
55
+ EndGlobalSection
56
+ EndGlobal
libvideo_compensator/include/Header.h ADDED
@@ -0,0 +1 @@
 
 
1
+ #pragma once
libvideo_compensator/include/seq_compensator.h ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #pragma once
2
+ #include <memory>
3
+ #include "opencv2/core.hpp"
4
+
5
+ namespace Ivs
6
+ {
7
+ struct TInputImageMeta
8
+ {
9
+ cv::Mat matImage;
10
+ std::vector<cv::Rect> vecObjRegions;
11
+ };
12
+
13
+ class ISequenceCompensator
14
+ {
15
+ public:
16
+ virtual ~ISequenceCompensator() = default;
17
+ virtual void SetInputMeta(const TInputImageMeta& tInput) = 0;
18
+ virtual void Process() = 0;
19
+ virtual bool IsBackgroundRecover() = 0;
20
+ virtual cv::Mat GetBackgroundImage() = 0;
21
+
22
+ };
23
+
24
+ typedef std::unique_ptr<ISequenceCompensator> PtrSequenceCompensator;
25
+ PtrSequenceCompensator CreateSequenceCompensator();
26
+ }
27
+
28
+
libvideo_compensator/src/sequence_compensator_imp.cpp ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #include "sequence_compensator_imp.h"
2
+
3
+ namespace Ivs
4
+ {
5
+ PtrSequenceCompensator CreateSequenceCompensator()
6
+ {
7
+ return std::make_unique<CSequenceCompensator>();
8
+ }
9
+
10
+ CSequenceCompensator::~CSequenceCompensator()
11
+ {
12
+ m_matBackgroundMask.release();
13
+ m_matBackground.release();
14
+ }
15
+
16
+ void CSequenceCompensator::SetInputMeta(const TInputImageMeta& tInput)
17
+ {
18
+ m_matCurFrame = tInput.matImage;
19
+ m_vecRectObjRegion = tInput.vecObjRegions;
20
+
21
+ if (m_matBackground.empty())
22
+ {
23
+ InitBackground();
24
+ }
25
+ }
26
+
27
+ void CSequenceCompensator::Process()
28
+ {
29
+ if (m_matBackgroundMask.empty())
30
+ {
31
+ return;
32
+ }
33
+
34
+ m_matCurFrame.copyTo(m_matBackground, m_matBackgroundMask);
35
+ UpdateBackgroundMask();
36
+ }
37
+
38
+ bool CSequenceCompensator::IsBackgroundRecover()
39
+ {
40
+ if (m_matBackgroundMask.empty())
41
+ {
42
+ return false;
43
+ }
44
+
45
+ return cv::countNonZero(m_matBackgroundMask) == 0;
46
+ }
47
+
48
+ cv::Mat CSequenceCompensator::GetBackgroundImage()
49
+ {
50
+ return m_matBackground;
51
+ }
52
+
53
+ void CSequenceCompensator::InitBackground()
54
+ {
55
+ m_matCurFrame.copyTo(m_matBackground);
56
+ m_matBackgroundMask = cv::Mat::zeros(m_matBackground.size(), CV_8UC1);
57
+
58
+ for (auto& rectObj : m_vecRectObjRegion)
59
+ {
60
+ m_matBackgroundMask(rectObj).setTo(255);
61
+ }
62
+ }
63
+
64
+ void CSequenceCompensator::UpdateBackgroundMask()
65
+ {
66
+
67
+ cv::Mat matMaskCur = cv::Mat::zeros(m_matBackgroundMask.size(), CV_8UC1);
68
+ for (auto& rect : m_vecRectObjRegion)
69
+ {
70
+ matMaskCur(rect).setTo(255);
71
+ }
72
+
73
+ cv::bitwise_and(m_matBackgroundMask, matMaskCur, m_matBackgroundMask);
74
+ m_vecRectObjRegionPrev = m_vecRectObjRegion;
75
+
76
+ matMaskCur.release();
77
+ }
78
+
79
+ }
libvideo_compensator/src/sequence_compensator_imp.h ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #pragma once
2
+ #include "../include/seq_compensator.h"
3
+
4
+ namespace Ivs
5
+ {
6
+ class CSequenceCompensator: public ISequenceCompensator
7
+ {
8
+ public:
9
+ CSequenceCompensator() = default;
10
+ ~CSequenceCompensator();
11
+
12
+ void SetInputMeta(const TInputImageMeta& tInput) override;
13
+ void Process() override;
14
+ bool IsBackgroundRecover() override;
15
+ cv::Mat GetBackgroundImage() override;
16
+
17
+ private:
18
+ void InitBackground();
19
+ void UpdateBackgroundMask();
20
+ cv::Mat m_matBackground;
21
+
22
+ cv::Mat m_matBackgroundMask;
23
+
24
+ cv::Mat m_matCurFrame;
25
+ std::vector<cv::Rect> m_vecRectObjRegion;
26
+ std::vector<cv::Rect> m_vecRectObjRegionPrev;
27
+
28
+ };
29
+ }
libvideo_compensator/vcproj/VideoCompensator.vcxproj ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|Win32">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>Win32</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Release|Win32">
9
+ <Configuration>Release</Configuration>
10
+ <Platform>Win32</Platform>
11
+ </ProjectConfiguration>
12
+ <ProjectConfiguration Include="Debug|x64">
13
+ <Configuration>Debug</Configuration>
14
+ <Platform>x64</Platform>
15
+ </ProjectConfiguration>
16
+ <ProjectConfiguration Include="Release|x64">
17
+ <Configuration>Release</Configuration>
18
+ <Platform>x64</Platform>
19
+ </ProjectConfiguration>
20
+ </ItemGroup>
21
+ <PropertyGroup Label="Globals">
22
+ <VCProjectVersion>15.0</VCProjectVersion>
23
+ <ProjectGuid>{A3F24EA0-D655-4C3C-BE18-BDCA0C3D425F}</ProjectGuid>
24
+ <RootNamespace>VideoCompensator</RootNamespace>
25
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
26
+ <ProjectName>libvideo_compensator</ProjectName>
27
+ </PropertyGroup>
28
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30
+ <ConfigurationType>StaticLibrary</ConfigurationType>
31
+ <UseDebugLibraries>true</UseDebugLibraries>
32
+ <PlatformToolset>v141</PlatformToolset>
33
+ <CharacterSet>MultiByte</CharacterSet>
34
+ </PropertyGroup>
35
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36
+ <ConfigurationType>StaticLibrary</ConfigurationType>
37
+ <UseDebugLibraries>false</UseDebugLibraries>
38
+ <PlatformToolset>v141</PlatformToolset>
39
+ <WholeProgramOptimization>true</WholeProgramOptimization>
40
+ <CharacterSet>MultiByte</CharacterSet>
41
+ </PropertyGroup>
42
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43
+ <ConfigurationType>StaticLibrary</ConfigurationType>
44
+ <UseDebugLibraries>true</UseDebugLibraries>
45
+ <PlatformToolset>v141</PlatformToolset>
46
+ <CharacterSet>MultiByte</CharacterSet>
47
+ </PropertyGroup>
48
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49
+ <ConfigurationType>StaticLibrary</ConfigurationType>
50
+ <UseDebugLibraries>false</UseDebugLibraries>
51
+ <PlatformToolset>v141</PlatformToolset>
52
+ <WholeProgramOptimization>true</WholeProgramOptimization>
53
+ <CharacterSet>MultiByte</CharacterSet>
54
+ </PropertyGroup>
55
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56
+ <ImportGroup Label="ExtensionSettings">
57
+ </ImportGroup>
58
+ <ImportGroup Label="Shared">
59
+ </ImportGroup>
60
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62
+ </ImportGroup>
63
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65
+ </ImportGroup>
66
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68
+ </ImportGroup>
69
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71
+ </ImportGroup>
72
+ <PropertyGroup Label="UserMacros" />
73
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
75
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
76
+ <TargetExt>.lib</TargetExt>
77
+ </PropertyGroup>
78
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
79
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
80
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
81
+ <TargetExt>.lib</TargetExt>
82
+ </PropertyGroup>
83
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
84
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
85
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
86
+ <TargetExt>.lib</TargetExt>
87
+ </PropertyGroup>
88
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
89
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
90
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
91
+ <TargetExt>.lib</TargetExt>
92
+ </PropertyGroup>
93
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
94
+ <ClCompile>
95
+ <WarningLevel>Level3</WarningLevel>
96
+ <Optimization>Disabled</Optimization>
97
+ <SDLCheck>true</SDLCheck>
98
+ <ConformanceMode>true</ConformanceMode>
99
+ </ClCompile>
100
+ <Link>
101
+ <SubSystem>Console</SubSystem>
102
+ </Link>
103
+ <Lib>
104
+ <AdditionalDependencies>opencv_world330d.lib</AdditionalDependencies>
105
+ </Lib>
106
+ </ItemDefinitionGroup>
107
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
108
+ <ClCompile>
109
+ <WarningLevel>Level3</WarningLevel>
110
+ <Optimization>Disabled</Optimization>
111
+ <SDLCheck>true</SDLCheck>
112
+ <ConformanceMode>true</ConformanceMode>
113
+ </ClCompile>
114
+ <Link>
115
+ <SubSystem>Console</SubSystem>
116
+ </Link>
117
+ <Lib>
118
+ <AdditionalDependencies>opencv_world330d.lib</AdditionalDependencies>
119
+ </Lib>
120
+ </ItemDefinitionGroup>
121
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
122
+ <ClCompile>
123
+ <WarningLevel>Level3</WarningLevel>
124
+ <Optimization>MaxSpeed</Optimization>
125
+ <FunctionLevelLinking>true</FunctionLevelLinking>
126
+ <IntrinsicFunctions>true</IntrinsicFunctions>
127
+ <SDLCheck>true</SDLCheck>
128
+ <ConformanceMode>true</ConformanceMode>
129
+ </ClCompile>
130
+ <Link>
131
+ <SubSystem>Console</SubSystem>
132
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
133
+ <OptimizeReferences>true</OptimizeReferences>
134
+ </Link>
135
+ <Lib>
136
+ <AdditionalDependencies>opencv_world330.lib</AdditionalDependencies>
137
+ </Lib>
138
+ </ItemDefinitionGroup>
139
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
140
+ <ClCompile>
141
+ <WarningLevel>Level3</WarningLevel>
142
+ <Optimization>MaxSpeed</Optimization>
143
+ <FunctionLevelLinking>true</FunctionLevelLinking>
144
+ <IntrinsicFunctions>true</IntrinsicFunctions>
145
+ <SDLCheck>true</SDLCheck>
146
+ <ConformanceMode>true</ConformanceMode>
147
+ </ClCompile>
148
+ <Link>
149
+ <SubSystem>Console</SubSystem>
150
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
151
+ <OptimizeReferences>true</OptimizeReferences>
152
+ </Link>
153
+ <Lib>
154
+ <AdditionalDependencies>opencv_world330.lib</AdditionalDependencies>
155
+ </Lib>
156
+ </ItemDefinitionGroup>
157
+ <ItemGroup>
158
+ <ClInclude Include="..\include\seq_compensator.h" />
159
+ <ClInclude Include="..\src\sequence_compensator_imp.h" />
160
+ </ItemGroup>
161
+ <ItemGroup>
162
+ <ClCompile Include="..\src\sequence_compensator_imp.cpp" />
163
+ </ItemGroup>
164
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
165
+ <ImportGroup Label="ExtensionTargets">
166
+ </ImportGroup>
167
+ </Project>
libvideo_compensator/vcproj/VideoCompensator.vcxproj.filters ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Filter Include="Source Files">
5
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7
+ </Filter>
8
+ <Filter Include="Header Files">
9
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
11
+ </Filter>
12
+ <Filter Include="Resource Files">
13
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15
+ </Filter>
16
+ <Filter Include="PrivateHeader">
17
+ <UniqueIdentifier>{73070e06-89f8-43b3-84a7-f08550662e97}</UniqueIdentifier>
18
+ </Filter>
19
+ </ItemGroup>
20
+ <ItemGroup>
21
+ <ClInclude Include="..\include\seq_compensator.h">
22
+ <Filter>Header Files</Filter>
23
+ </ClInclude>
24
+ <ClInclude Include="..\src\sequence_compensator_imp.h">
25
+ <Filter>PrivateHeader</Filter>
26
+ </ClInclude>
27
+ </ItemGroup>
28
+ <ItemGroup>
29
+ <ClCompile Include="..\src\sequence_compensator_imp.cpp">
30
+ <Filter>Source Files</Filter>
31
+ </ClCompile>
32
+ </ItemGroup>
33
+ </Project>
libvideo_compensator/vcproj/VideoCompensator.vcxproj.user ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <PropertyGroup />
4
+ </Project>
test/test_video_compensator/data/img_1.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "X": 2357,
4
+ "Y": 1090,
5
+ "Width": 388,
6
+ "Height":231
7
+ },
8
+ {
9
+ "X": 1910,
10
+ "Y": 1829,
11
+ "Width": 285,
12
+ "Height":382
13
+ }
14
+ ]
test/test_video_compensator/data/img_1.png ADDED

Git LFS Details

  • SHA256: 9009040eed09afa5cf4fc22ee96ddcbd5b5ca695b5dc5c183a246fad3c4119d8
  • Pointer size: 132 Bytes
  • Size of remote file: 6.15 MB
test/test_video_compensator/data/img_2.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "X": 2267,
4
+ "Y": 1487,
5
+ "Width": 343,
6
+ "Height":278
7
+ },
8
+ {
9
+ "X": 1920,
10
+ "Y": 1830,
11
+ "Width": 249,
12
+ "Height":390
13
+ }
14
+ ]
test/test_video_compensator/data/img_2.png ADDED

Git LFS Details

  • SHA256: ef0869c7d4f90630ac8039519aa92199687bd44db136e9c0daf848528190a18c
  • Pointer size: 132 Bytes
  • Size of remote file: 6.03 MB
test/test_video_compensator/data/img_3.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "X": 1206,
4
+ "Y": 1473,
5
+ "Width": 354,
6
+ "Height":288
7
+ },
8
+ {
9
+ "X": 2375,
10
+ "Y": 1086,
11
+ "Width": 332,
12
+ "Height":252
13
+ }
14
+ ]
test/test_video_compensator/data/img_3.png ADDED

Git LFS Details

  • SHA256: 2a6f5c984629a875384cd8ea940e504ac0382d55a34238a19f2e9aaf64a35826
  • Pointer size: 132 Bytes
  • Size of remote file: 6.19 MB
test/test_video_compensator/src/test_sequence_compensator.cpp ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #define CATCH_CONFIG_MAIN
2
+ #include "catch2/catch.hpp"
3
+ #include "test_utility.h"
4
+
5
+ namespace Ivs
6
+ {
7
+ SCENARIO("Test Init Sequence Compensator")
8
+ {
9
+ std::vector<TInputImageMeta> vecInputMeta;
10
+
11
+ }
12
+
13
+ SCENARIO("Test Background Recover Simple")
14
+ {
15
+ auto vecInputMeta = ReadImageMeta(strTestFolder);
16
+
17
+ auto pSeqCompensator = CreateSequenceCompensator();
18
+
19
+ for (auto& tMeta : vecInputMeta)
20
+ {
21
+ if (!pSeqCompensator->IsBackgroundRecover())
22
+ {
23
+ pSeqCompensator->SetInputMeta(tMeta);
24
+ pSeqCompensator->Process();
25
+ }
26
+ }
27
+
28
+
29
+ CHECK(pSeqCompensator->IsBackgroundRecover());
30
+ }
31
+ }
test/test_video_compensator/src/test_utility.h ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #pragma once
2
+ #include <string>
3
+ #include <filesystem>
4
+ #include <fstream>
5
+ #include "opencv2/highgui.hpp"
6
+ #include "opencv2/imgproc.hpp"
7
+ #include "jsoncpp/json/json.h"
8
+ #include "../../../libvideo_compensator/include/seq_compensator.h"
9
+
10
+ namespace fs = std::experimental::filesystem;
11
+ static const std::string strTestFolder{"D:\\myProject\\VideoCompensator\\test\\test_video_compensator\\data"};
12
+
13
+ namespace Ivs
14
+ {
15
+ inline std::vector<cv::Rect> LoadJsonMeta(const std::string& strFilePath)
16
+ {
17
+ std::ifstream fInput{ strFilePath };
18
+ Json::Value root;
19
+ Json::Reader reader;
20
+ std::vector<cv::Rect> vecRectObjects;
21
+
22
+ if (reader.parse(fInput, root))
23
+ {
24
+ for (auto& obj : root)
25
+ {
26
+ cv::Rect rectObject;
27
+ rectObject.x = obj["X"].asInt();
28
+ rectObject.y = obj["Y"].asInt();
29
+ rectObject.width = obj["Width"].asInt();
30
+ rectObject.height = obj["Height"].asInt();
31
+ vecRectObjects.emplace_back(rectObject);
32
+ }
33
+ }
34
+
35
+ return std::move(vecRectObjects);
36
+ }
37
+
38
+ inline std::vector<TInputImageMeta> ReadImageMeta(const std::string& strTestFolder)
39
+ {
40
+ std::vector<TInputImageMeta> vecSequenceInput;
41
+ auto itFiles = fs::directory_iterator{ strTestFolder };
42
+
43
+ for (auto& itFile : itFiles)
44
+ {
45
+ if (itFile.path().extension() == ".png")
46
+ {
47
+ TInputImageMeta tInput;
48
+ auto pathFile = itFile.path();
49
+ std::string strFileName = pathFile.stem().string();
50
+ auto pathJsonFile = pathFile.parent_path() / fs::path{ strFileName + ".json" };
51
+
52
+ tInput.matImage = cv::imread(itFile.path().string());
53
+ tInput.vecObjRegions = LoadJsonMeta(pathJsonFile.string());
54
+
55
+ for (auto& rect : tInput.vecObjRegions)
56
+ {
57
+ cv::rectangle(tInput.matImage, rect, { 255, 0, 0 });
58
+ }
59
+
60
+ vecSequenceInput.emplace_back(tInput);
61
+ }
62
+ }
63
+
64
+ return std::move(vecSequenceInput);
65
+ }
66
+
67
+
68
+ }
test/test_video_compensator/vcproj/test_video_compensator.vcxproj ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|Win32">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>Win32</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Release|Win32">
9
+ <Configuration>Release</Configuration>
10
+ <Platform>Win32</Platform>
11
+ </ProjectConfiguration>
12
+ <ProjectConfiguration Include="Debug|x64">
13
+ <Configuration>Debug</Configuration>
14
+ <Platform>x64</Platform>
15
+ </ProjectConfiguration>
16
+ <ProjectConfiguration Include="Release|x64">
17
+ <Configuration>Release</Configuration>
18
+ <Platform>x64</Platform>
19
+ </ProjectConfiguration>
20
+ </ItemGroup>
21
+ <ItemGroup>
22
+ <ProjectReference Include="..\..\..\..\..\work\commlib\jsoncpp\makefiles\msvc2017\lib_json.vcxproj">
23
+ <Project>{1e6c2c1c-6453-4129-ae3f-0ee8e6599c89}</Project>
24
+ </ProjectReference>
25
+ <ProjectReference Include="..\..\..\libvideo_compensator\vcproj\VideoCompensator.vcxproj">
26
+ <Project>{a3f24ea0-d655-4c3c-be18-bdca0c3d425f}</Project>
27
+ </ProjectReference>
28
+ </ItemGroup>
29
+ <ItemGroup>
30
+ <ClCompile Include="..\src\test_sequence_compensator.cpp" />
31
+ </ItemGroup>
32
+ <ItemGroup>
33
+ <ClInclude Include="..\src\test_utility.h" />
34
+ </ItemGroup>
35
+ <PropertyGroup Label="Globals">
36
+ <VCProjectVersion>15.0</VCProjectVersion>
37
+ <ProjectGuid>{C5F0E919-E67E-41FD-8FAE-7464EF283EEF}</ProjectGuid>
38
+ <RootNamespace>testvideocompensator</RootNamespace>
39
+ <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
40
+ </PropertyGroup>
41
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
42
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
43
+ <ConfigurationType>Application</ConfigurationType>
44
+ <UseDebugLibraries>true</UseDebugLibraries>
45
+ <PlatformToolset>v141</PlatformToolset>
46
+ <CharacterSet>MultiByte</CharacterSet>
47
+ </PropertyGroup>
48
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
49
+ <ConfigurationType>Application</ConfigurationType>
50
+ <UseDebugLibraries>false</UseDebugLibraries>
51
+ <PlatformToolset>v141</PlatformToolset>
52
+ <WholeProgramOptimization>true</WholeProgramOptimization>
53
+ <CharacterSet>MultiByte</CharacterSet>
54
+ </PropertyGroup>
55
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
56
+ <ConfigurationType>Application</ConfigurationType>
57
+ <UseDebugLibraries>true</UseDebugLibraries>
58
+ <PlatformToolset>v141</PlatformToolset>
59
+ <CharacterSet>MultiByte</CharacterSet>
60
+ </PropertyGroup>
61
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
62
+ <ConfigurationType>Application</ConfigurationType>
63
+ <UseDebugLibraries>false</UseDebugLibraries>
64
+ <PlatformToolset>v141</PlatformToolset>
65
+ <WholeProgramOptimization>true</WholeProgramOptimization>
66
+ <CharacterSet>MultiByte</CharacterSet>
67
+ </PropertyGroup>
68
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
69
+ <ImportGroup Label="ExtensionSettings">
70
+ </ImportGroup>
71
+ <ImportGroup Label="Shared">
72
+ </ImportGroup>
73
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
75
+ </ImportGroup>
76
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
78
+ </ImportGroup>
79
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
81
+ </ImportGroup>
82
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
84
+ </ImportGroup>
85
+ <PropertyGroup Label="UserMacros" />
86
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
87
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
88
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
89
+ </PropertyGroup>
90
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
91
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
92
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
93
+ </PropertyGroup>
94
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
95
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
96
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
97
+ </PropertyGroup>
98
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
99
+ <OutDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\app\$(Configuration)\</OutDir>
100
+ <IntDir>$(SolutionDir)$(SolutionName)_build\$(PlatformTarget)\obj\$(ProjectName).dir\$(Configuration)\</IntDir>
101
+ </PropertyGroup>
102
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
103
+ <ClCompile>
104
+ <WarningLevel>Level3</WarningLevel>
105
+ <Optimization>Disabled</Optimization>
106
+ <SDLCheck>true</SDLCheck>
107
+ <ConformanceMode>true</ConformanceMode>
108
+ </ClCompile>
109
+ <Link>
110
+ <SubSystem>Console</SubSystem>
111
+ <AdditionalDependencies>opencv_world330d.lib;%(AdditionalDependencies); vfw32.lib</AdditionalDependencies>
112
+ </Link>
113
+ </ItemDefinitionGroup>
114
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
115
+ <ClCompile>
116
+ <WarningLevel>Level3</WarningLevel>
117
+ <Optimization>Disabled</Optimization>
118
+ <SDLCheck>true</SDLCheck>
119
+ <ConformanceMode>true</ConformanceMode>
120
+ </ClCompile>
121
+ <Link>
122
+ <SubSystem>Console</SubSystem>
123
+ <AdditionalDependencies>opencv_world330d.lib;%(AdditionalDependencies); vfw32.lib</AdditionalDependencies>
124
+ </Link>
125
+ </ItemDefinitionGroup>
126
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
127
+ <ClCompile>
128
+ <WarningLevel>Level3</WarningLevel>
129
+ <Optimization>MaxSpeed</Optimization>
130
+ <FunctionLevelLinking>true</FunctionLevelLinking>
131
+ <IntrinsicFunctions>true</IntrinsicFunctions>
132
+ <SDLCheck>true</SDLCheck>
133
+ <ConformanceMode>true</ConformanceMode>
134
+ </ClCompile>
135
+ <Link>
136
+ <SubSystem>Console</SubSystem>
137
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
138
+ <OptimizeReferences>true</OptimizeReferences>
139
+ <AdditionalDependencies>opencv_world330.lib;%(AdditionalDependencies);vfw32.lib</AdditionalDependencies>
140
+ </Link>
141
+ </ItemDefinitionGroup>
142
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
143
+ <ClCompile>
144
+ <WarningLevel>Level3</WarningLevel>
145
+ <Optimization>MaxSpeed</Optimization>
146
+ <FunctionLevelLinking>true</FunctionLevelLinking>
147
+ <IntrinsicFunctions>true</IntrinsicFunctions>
148
+ <SDLCheck>true</SDLCheck>
149
+ <ConformanceMode>true</ConformanceMode>
150
+ </ClCompile>
151
+ <Link>
152
+ <SubSystem>Console</SubSystem>
153
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
154
+ <OptimizeReferences>true</OptimizeReferences>
155
+ <AdditionalDependencies>opencv_world330.lib;%(AdditionalDependencies);vfw32.lib</AdditionalDependencies>
156
+ </Link>
157
+ </ItemDefinitionGroup>
158
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
159
+ <ImportGroup Label="ExtensionTargets">
160
+ </ImportGroup>
161
+ </Project>
test/test_video_compensator/vcproj/test_video_compensator.vcxproj.filters ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup>
4
+ <Filter Include="Source Files">
5
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7
+ </Filter>
8
+ <Filter Include="Header Files">
9
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
11
+ </Filter>
12
+ <Filter Include="Resource Files">
13
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15
+ </Filter>
16
+ </ItemGroup>
17
+ <ItemGroup>
18
+ <ClCompile Include="..\src\test_sequence_compensator.cpp">
19
+ <Filter>Source Files</Filter>
20
+ </ClCompile>
21
+ </ItemGroup>
22
+ <ItemGroup>
23
+ <ClInclude Include="..\src\test_utility.h">
24
+ <Filter>Header Files</Filter>
25
+ </ClInclude>
26
+ </ItemGroup>
27
+ </Project>
test/test_video_compensator/vcproj/test_video_compensator.vcxproj.user ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <PropertyGroup />
4
+ </Project>