├── openCV
├── minhal.png
├── minha.png
├── userData.csv
├── openCV.vcxproj.filters
├── openCV.vcxproj
├── sample.txt
├── main.cpp
└── sample.csv
├── CMakeFiles
└── cmake.check_cache
├── openCV.sln
├── CMakeCache.txt
├── .gitattributes
├── .gitignore
└── README.md
/openCV/minhal.png:
--------------------------------------------------------------------------------
1 | ya ali madad
--------------------------------------------------------------------------------
/CMakeFiles/cmake.check_cache:
--------------------------------------------------------------------------------
1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file
2 |
--------------------------------------------------------------------------------
/openCV/minha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Minhal128/E-locks-A-blockchain-based-voting-system/HEAD/openCV/minha.png
--------------------------------------------------------------------------------
/openCV/userData.csv:
--------------------------------------------------------------------------------
1 | Minhal,20,42501,PPP,faces/Minhal_1719691500.png
2 | minhal,19,42501,PPP,faces/minhal_1719695396.png
3 | Minha;,17,52415,Pti,faces/Minha;_1719695447.png
4 |
--------------------------------------------------------------------------------
/openCV/openCV.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Source Files
20 |
21 |
22 |
--------------------------------------------------------------------------------
/openCV.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.10.35013.160
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openCV", "openCV\openCV.vcxproj", "{01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x64 = Debug|x64
11 | Debug|x86 = Debug|x86
12 | Release|x64 = Release|x64
13 | Release|x86 = Release|x86
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Debug|x64.ActiveCfg = Debug|x64
17 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Debug|x64.Build.0 = Debug|x64
18 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Debug|x86.ActiveCfg = Debug|Win32
19 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Debug|x86.Build.0 = Debug|Win32
20 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Release|x64.ActiveCfg = Release|x64
21 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Release|x64.Build.0 = Release|x64
22 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Release|x86.ActiveCfg = Release|Win32
23 | {01A5C045-C4BE-46C4-9827-0EF54B2BCDBD}.Release|x86.Build.0 = Release|Win32
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {21330251-06EF-4D57-9037-20873A7FD609}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/CMakeCache.txt:
--------------------------------------------------------------------------------
1 | # This is the CMakeCache file.
2 | # For build in directory: c:/Users/Minhal Rizvi/source/repos/openCV
3 | # It was generated by CMake: C:/Program Files/CMake/bin/cmake.exe
4 | # You can edit this file to change values found and used by cmake.
5 | # If you do not want to change any of the values, simply exit the editor.
6 | # If you do want to change a value, simply edit, save, and exit the editor.
7 | # The syntax for the file is as follows:
8 | # KEY:TYPE=VALUE
9 | # KEY is the name of a variable in the cache.
10 | # TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
11 | # VALUE is the current value for the KEY.
12 |
13 | ########################
14 | # EXTERNAL cache entries
15 | ########################
16 |
17 |
18 | ########################
19 | # INTERNAL cache entries
20 | ########################
21 |
22 | //This is the directory where this CMakeCache.txt was created
23 | CMAKE_CACHEFILE_DIR:INTERNAL=c:/Users/Minhal Rizvi/source/repos/openCV
24 | //Major version of cmake used to create the current loaded cache
25 | CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
26 | //Minor version of cmake used to create the current loaded cache
27 | CMAKE_CACHE_MINOR_VERSION:INTERNAL=30
28 | //Patch version of cmake used to create the current loaded cache
29 | CMAKE_CACHE_PATCH_VERSION:INTERNAL=0
30 | //Path to CMake executable.
31 | CMAKE_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cmake.exe
32 | //Path to cpack program executable.
33 | CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cpack.exe
34 | //Path to ctest program executable.
35 | CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files/CMake/bin/ctest.exe
36 | //Path to CMake installation.
37 | CMAKE_ROOT:INTERNAL=C:/Program Files/CMake/share/cmake-3.30
38 |
39 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
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 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/openCV/openCV.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 |
22 | 17.0
23 | Win32Proj
24 | {01a5c045-c4be-46c4-9827-0ef54b2bcdbd}
25 | openCV
26 | 10.0
27 |
28 |
29 |
30 | Application
31 | true
32 | v143
33 | Unicode
34 |
35 |
36 | Application
37 | false
38 | v143
39 | true
40 | Unicode
41 |
42 |
43 | Application
44 | true
45 | v143
46 | Unicode
47 |
48 |
49 | Application
50 | false
51 | v143
52 | true
53 | Unicode
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | C:\Open\opencv\build\include;$(IncludePath)
75 | C:\Open\opencv\build\x64\vc16\lib;$(LibraryPath)
76 |
77 |
78 | C:\Open\opencv\opencv_contrib-4.x\opencv_contrib-4.x\modules\face\include;H:\Development\SQL\mysql-connector-c++-8.4.0-winx64\include\jdbc
79 |
80 |
81 |
82 | Level3
83 | true
84 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
85 | true
86 |
87 |
88 | Console
89 | true
90 |
91 |
92 |
93 |
94 | Level3
95 | true
96 | true
97 | true
98 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
99 | true
100 |
101 |
102 | Console
103 | true
104 | true
105 | true
106 |
107 |
108 |
109 |
110 | Level3
111 | true
112 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
113 | true
114 |
115 |
116 | Console
117 | true
118 | opencv_world4100d.lib;opencv_world4100.lib;%(AdditionalDependencies)
119 | C:\Open\opencv\build\x64\vc16\lib
120 |
121 |
122 |
123 |
124 | Level3
125 | true
126 | true
127 | true
128 | STATIC_CONCPP;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
129 | true
130 | C:\Open\opencv\opencv_contrib-4.x\opencv_contrib-4.x\modules\face\include;%(AdditionalIncludeDirectories)
131 |
132 |
133 | Console
134 | true
135 | true
136 | true
137 | C:\Open\opencv\build\x64\vc16\lib;%(AdditionalLibraryDirectories)
138 | opencv_world4100d.lib;opencv_world4100.lib;%(AdditionalDependencies)
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
--------------------------------------------------------------------------------
/openCV/sample.txt:
--------------------------------------------------------------------------------
1 | minhal,15,2341,op
2 | minhal,15,2341,op
3 | usman,20,342,io
4 | usman,20,342,io
5 | Unknown,-1,Unknown,Unknown
6 | Unknown,-1,Unknown,Unknown
7 | Unknown,-1,Unknown,Unknown
8 | Unknown,-1,Unknown,Unknown
9 | Unknown,-1,Unknown,Unknown
10 | Unknown,-1,Unknown,Unknown
11 | Unknown,-1,Unknown,Unknown
12 | Unknown,-1,Unknown,Unknown
13 | Unknown,-1,Unknown,Unknown
14 | Unknown,-1,Unknown,Unknown
15 | Unknown,-1,Unknown,Unknown
16 | Unknown,-1,Unknown,Unknown
17 | Unknown,-1,Unknown,Unknown
18 | Unknown,-1,Unknown,Unknown
19 | Unknown,-1,Unknown,Unknown
20 | Unknown,-1,Unknown,Unknown
21 | Unknown,-1,Unknown,Unknown
22 | Unknown,-1,Unknown,Unknown
23 | Unknown,-1,Unknown,Unknown
24 | Unknown,-1,Unknown,Unknown
25 | Unknown,-1,Unknown,Unknown
26 | Unknown,-1,Unknown,Unknown
27 | Unknown,-1,Unknown,Unknown
28 | Unknown,-1,Unknown,Unknown
29 | Unknown,-1,Unknown,Unknown
30 | Unknown,-1,Unknown,Unknown
31 | Unknown,-1,Unknown,Unknown
32 | Unknown,-1,Unknown,Unknown
33 | Unknown,-1,Unknown,Unknown
34 | Unknown,-1,Unknown,Unknown
35 | Unknown,-1,Unknown,Unknown
36 | Unknown,-1,Unknown,Unknown
37 | Unknown,-1,Unknown,Unknown
38 | Unknown,-1,Unknown,Unknown
39 | Unknown,-1,Unknown,Unknown
40 | Unknown,-1,Unknown,Unknown
41 | Unknown,-1,Unknown,Unknown
42 | Unknown,-1,Unknown,Unknown
43 | Unknown,-1,Unknown,Unknown
44 | Unknown,-1,Unknown,Unknown
45 | Unknown,-1,Unknown,Unknown
46 | Unknown,-1,Unknown,Unknown
47 | Unknown,-1,Unknown,Unknown
48 | Unknown,-1,Unknown,Unknown
49 | Unknown,-1,Unknown,Unknown
50 | Unknown,-1,Unknown,Unknown
51 | Unknown,-1,Unknown,Unknown
52 | Unknown,-1,Unknown,Unknown
53 | Unknown,-1,Unknown,Unknown
54 | Unknown,-1,Unknown,Unknown
55 | Unknown,-1,Unknown,Unknown
56 | Unknown,-1,Unknown,Unknown
57 | Unknown,-1,Unknown,Unknown
58 | Unknown,-1,Unknown,Unknown
59 | Unknown,-1,Unknown,Unknown
60 | Unknown,-1,Unknown,Unknown
61 | Unknown,-1,Unknown,Unknown
62 | Unknown,-1,Unknown,Unknown
63 | Unknown,-1,Unknown,Unknown
64 | Unknown,-1,Unknown,Unknown
65 | Unknown,-1,Unknown,Unknown
66 | Unknown,-1,Unknown,Unknown
67 | Unknown,-1,Unknown,Unknown
68 | Unknown,-1,Unknown,Unknown
69 | Unknown,-1,Unknown,Unknown
70 | Unknown,-1,Unknown,Unknown
71 | Unknown,-1,Unknown,Unknown
72 | Unknown,-1,Unknown,Unknown
73 | Unknown,-1,Unknown,Unknown
74 | Unknown,-1,Unknown,Unknown
75 | Unknown,-1,Unknown,Unknown
76 | Unknown,-1,Unknown,Unknown
77 | Unknown,-1,Unknown,Unknown
78 | Unknown,-1,Unknown,Unknown
79 | Unknown,-1,Unknown,Unknown
80 | Unknown,-1,Unknown,Unknown
81 | Unknown,-1,Unknown,Unknown
82 | Unknown,-1,Unknown,Unknown
83 | Unknown,-1,Unknown,Unknown
84 | Unknown,-1,Unknown,Unknown
85 | Unknown,-1,Unknown,Unknown
86 | Unknown,-1,Unknown,Unknown
87 | Unknown,-1,Unknown,Unknown
88 | Unknown,-1,Unknown,Unknown
89 | Unknown,-1,Unknown,Unknown
90 | Unknown,-1,Unknown,Unknown
91 | Unknown,-1,Unknown,Unknown
92 | Unknown,-1,Unknown,Unknown
93 | Unknown,-1,Unknown,Unknown
94 | Unknown,-1,Unknown,Unknown
95 | Unknown,-1,Unknown,Unknown
96 | Unknown,-1,Unknown,Unknown
97 | Unknown,-1,Unknown,Unknown
98 | Unknown,-1,Unknown,Unknown
99 | Unknown,-1,Unknown,Unknown
100 | Unknown,-1,Unknown,Unknown
101 | Unknown,-1,Unknown,Unknown
102 | Unknown,-1,Unknown,Unknown
103 | Unknown,-1,Unknown,Unknown
104 | Unknown,-1,Unknown,Unknown
105 | Unknown,-1,Unknown,Unknown
106 | Unknown,-1,Unknown,Unknown
107 | Unknown,-1,Unknown,Unknown
108 | Unknown,-1,Unknown,Unknown
109 | Unknown,-1,Unknown,Unknown
110 | Unknown,-1,Unknown,Unknown
111 | Unknown,-1,Unknown,Unknown
112 | Unknown,-1,Unknown,Unknown
113 | Unknown,-1,Unknown,Unknown
114 | Unknown,-1,Unknown,Unknown
115 | Unknown,-1,Unknown,Unknown
116 | Unknown,-1,Unknown,Unknown
117 | Unknown,-1,Unknown,Unknown
118 | Unknown,-1,Unknown,Unknown
119 | Unknown,-1,Unknown,Unknown
120 | Unknown,-1,Unknown,Unknown
121 | Unknown,-1,Unknown,Unknown
122 | Unknown,-1,Unknown,Unknown
123 | Unknown,-1,Unknown,Unknown
124 | Unknown,-1,Unknown,Unknown
125 | Unknown,-1,Unknown,Unknown
126 | Unknown,-1,Unknown,Unknown
127 | Unknown,-1,Unknown,Unknown
128 | Unknown,-1,Unknown,Unknown
129 | Unknown,-1,Unknown,Unknown
130 | Unknown,-1,Unknown,Unknown
131 | Unknown,-1,Unknown,Unknown
132 | Unknown,-1,Unknown,Unknown
133 | Unknown,-1,Unknown,Unknown
134 | Unknown,-1,Unknown,Unknown
135 | Unknown,-1,Unknown,Unknown
136 | Unknown,-1,Unknown,Unknown
137 | Unknown,-1,Unknown,Unknown
138 | Unknown,-1,Unknown,Unknown
139 | Unknown,-1,Unknown,Unknown
140 | Unknown,-1,Unknown,Unknown
141 | Unknown,-1,Unknown,Unknown
142 | Unknown,-1,Unknown,Unknown
143 | Unknown,-1,Unknown,Unknown
144 | Unknown,-1,Unknown,Unknown
145 | Unknown,-1,Unknown,Unknown
146 | Unknown,-1,Unknown,Unknown
147 | Unknown,-1,Unknown,Unknown
148 | Unknown,-1,Unknown,Unknown
149 | Unknown,-1,Unknown,Unknown
150 | Unknown,-1,Unknown,Unknown
151 | Unknown,-1,Unknown,Unknown
152 | Unknown,-1,Unknown,Unknown
153 | Unknown,-1,Unknown,Unknown
154 | Unknown,-1,Unknown,Unknown
155 | Unknown,-1,Unknown,Unknown
156 | Unknown,-1,Unknown,Unknown
157 | Unknown,-1,Unknown,Unknown
158 | Unknown,-1,Unknown,Unknown
159 | Unknown,-1,Unknown,Unknown
160 | Unknown,-1,Unknown,Unknown
161 | Unknown,-1,Unknown,Unknown
162 | Unknown,-1,Unknown,Unknown
163 | Unknown,-1,Unknown,Unknown
164 | Unknown,-1,Unknown,Unknown
165 | Unknown,-1,Unknown,Unknown
166 | Unknown,-1,Unknown,Unknown
167 | Unknown,-1,Unknown,Unknown
168 | Unknown,-1,Unknown,Unknown
169 | Unknown,-1,Unknown,Unknown
170 | Unknown,-1,Unknown,Unknown
171 | Unknown,-1,Unknown,Unknown
172 | Unknown,-1,Unknown,Unknown
173 | Unknown,-1,Unknown,Unknown
174 | Unknown,-1,Unknown,Unknown
175 | Unknown,-1,Unknown,Unknown
176 | Unknown,-1,Unknown,Unknown
177 | Unknown,-1,Unknown,Unknown
178 | Unknown,-1,Unknown,Unknown
179 | Unknown,-1,Unknown,Unknown
180 | Unknown,-1,Unknown,Unknown
181 | Unknown,-1,Unknown,Unknown
182 | Unknown,-1,Unknown,Unknown
183 | Unknown,-1,Unknown,Unknown
184 | Unknown,-1,Unknown,Unknown
185 | Unknown,-1,Unknown,Unknown
186 | Unknown,-1,Unknown,Unknown
187 | Unknown,-1,Unknown,Unknown
188 | Unknown,-1,Unknown,Unknown
189 | Unknown,-1,Unknown,Unknown
190 | Unknown,-1,Unknown,Unknown
191 | Unknown,-1,Unknown,Unknown
192 | Unknown,-1,Unknown,Unknown
193 | Unknown,-1,Unknown,Unknown
194 | Unknown,-1,Unknown,Unknown
195 | Unknown,-1,Unknown,Unknown
196 | Unknown,-1,Unknown,Unknown
197 | Unknown,-1,Unknown,Unknown
198 | Unknown,-1,Unknown,Unknown
199 | Unknown,-1,Unknown,Unknown
200 | Unknown,-1,Unknown,Unknown
201 | Unknown,-1,Unknown,Unknown
202 | Unknown,-1,Unknown,Unknown
203 | Unknown,-1,Unknown,Unknown
204 | Unknown,-1,Unknown,Unknown
205 | Unknown,-1,Unknown,Unknown
206 | Unknown,-1,Unknown,Unknown
207 | Unknown,-1,Unknown,Unknown
208 | Unknown,-1,Unknown,Unknown
209 | Unknown,-1,Unknown,Unknown
210 | Unknown,-1,Unknown,Unknown
211 | Unknown,-1,Unknown,Unknown
212 | Unknown,-1,Unknown,Unknown
213 | Unknown,-1,Unknown,Unknown
214 | Unknown,-1,Unknown,Unknown
215 | Unknown,-1,Unknown,Unknown
216 | Unknown,-1,Unknown,Unknown
217 | Unknown,-1,Unknown,Unknown
218 | Unknown,-1,Unknown,Unknown
219 | Unknown,-1,Unknown,Unknown
220 | Unknown,-1,Unknown,Unknown
221 | Unknown,-1,Unknown,Unknown
222 | Unknown,-1,Unknown,Unknown
223 | Unknown,-1,Unknown,Unknown
224 | Unknown,-1,Unknown,Unknown
225 | Unknown,-1,Unknown,Unknown
226 | Unknown,-1,Unknown,Unknown
227 | Unknown,-1,Unknown,Unknown
228 | Unknown,-1,Unknown,Unknown
229 | Unknown,-1,Unknown,Unknown
230 | Unknown,-1,Unknown,Unknown
231 | Unknown,-1,Unknown,Unknown
232 | Unknown,-1,Unknown,Unknown
233 | Unknown,-1,Unknown,Unknown
234 | Unknown,-1,Unknown,Unknown
235 | Unknown,-1,Unknown,Unknown
236 | Unknown,-1,Unknown,Unknown
237 | Unknown,-1,Unknown,Unknown
238 | Unknown,-1,Unknown,Unknown
239 | Unknown,-1,Unknown,Unknown
240 | Unknown,-1,Unknown,Unknown
241 | Unknown,-1,Unknown,Unknown
242 | Unknown,-1,Unknown,Unknown
243 | Unknown,-1,Unknown,Unknown
244 | Unknown,-1,Unknown,Unknown
245 | Unknown,-1,Unknown,Unknown
246 | Unknown,-1,Unknown,Unknown
247 | Unknown,-1,Unknown,Unknown
248 | Unknown,-1,Unknown,Unknown
249 | Unknown,-1,Unknown,Unknown
250 | Unknown,-1,Unknown,Unknown
251 | Unknown,-1,Unknown,Unknown
252 | Unknown,-1,Unknown,Unknown
253 | Unknown,-1,Unknown,Unknown
254 | Unknown,-1,Unknown,Unknown
255 | Unknown,-1,Unknown,Unknown
256 | Unknown,-1,Unknown,Unknown
257 | Unknown,-1,Unknown,Unknown
258 | Unknown,-1,Unknown,Unknown
259 | Unknown,-1,Unknown,Unknown
260 | Unknown,-1,Unknown,Unknown
261 | Unknown,-1,Unknown,Unknown
262 | Unknown,-1,Unknown,Unknown
263 | Unknown,-1,Unknown,Unknown
264 | Unknown,-1,Unknown,Unknown
265 | Unknown,-1,Unknown,Unknown
266 | Unknown,-1,Unknown,Unknown
267 | Unknown,-1,Unknown,Unknown
268 | Unknown,-1,Unknown,Unknown
269 | Unknown,-1,Unknown,Unknown
270 | Unknown,-1,Unknown,Unknown
271 | Minhal,19,42501,PPP
272 | ,0,0,0
273 | Minhal,20,42051,PPP
274 | Minhal,25,6523,pti
275 | fabiha,20,42501,MQM
276 | mino,12,2,p
277 | minhal,19,25,P
278 | 0,0,0,0
279 | minhak,52,5,p
280 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
E-LOCKS: A Blockchain Based Voting System 🧊⫘🧊
2 |
3 |
4 |
5 |
6 |
7 | I have developed a C++ application integrating facial recognition with a blockchain-based voting system, utilizing OpenCV for real-time face detection and recognition. The program allows users to register their details, including name, age, CNIC, and political party, which are securely encrypted and stored. It employs a custom SimpleEncryption class for data encryption and blockchain technology to create tamper-proof logs of user interactions. Users are prompted to enter their details interactively, and the application saves captured images and encrypted data in specified paths. This system ensures data privacy, transparency, and security, making it a robust solution for secure voting and user verification. Contributions to enhance its features and functionality are welcome.
8 |
9 |
10 | 🔎 Project Preview
11 | Note: The camera resolution is not optimal.
12 |
13 |
14 |
15 | Disclaimer
16 | This C++ program, designed and developed by Syed Muhammad Minhal Rizvi, enhances efficiency by providing quick access to frequently used applications and websites through facial recognition, encryption, and blockchain concepts using OpenCV. The program captures live video, detects faces, and allows users to input details for each detected face, which are then encrypted and saved. It employs XOR-based encryption for user data, decrypts it for display, and logs entries with block numbers, hashes, and timestamps. While efforts have been made to ensure reliability and security, users are advised to use the program responsibly and acknowledge its provided as-is without guarantees. The program operates based on user commands, automating tasks to optimize time, though effectiveness may vary based on system configurations and external factors.
17 | 🧐 Features
18 |
19 | Our project "E-LOCKS: A Blockchain Based Voting System" includes features such as:
20 |
21 | Facial recognition for user identification
22 | Encryption of user data using a simple XOR encryption algorithm
23 | Decryption of user data and saving decrypted data to a specified path
24 | Capturing and storing images of detected faces
25 | Managing user details including name, age, CNIC, and political party affiliation
26 | Storing encrypted user data in a database
27 | Displaying block details including block hash and timestamp
28 | Real-time video capture and face detection using OpenCV
29 | Providing an interactive console for user input and data entry
30 | Implementing a blockchain mechanism for voting integrity
31 |
32 |
33 |
34 |
35 | 🛠 Installation Steps:
36 |
37 | 1. Clone the repository
38 |
39 | ```bash
40 | git clone https://github.com/Minhal128/E-locks-A-blockchain-based-voting-system.git
41 | ```
42 | 2. Set the path in Visual studio for OpenCV
43 | here is the way that how I setup the OpenCV in visual studio
44 |
45 | Add OpenCV include and library paths in project properties.
46 | Include opencv_world470d.lib for debug and opencv_world470.lib for release.
47 | Add lib and bin paths to system environment variables for OpenCV.
48 | Name the main source file and copy test code to set up the project.
49 | Modify the image path, then restart Visual Studio to ensure code recognition and execution.
50 | Build the solution to execute the OpenCV project in Visual Studio 2022.
51 |
52 |
53 | 2. Install & Run OpenCV and C++ Language modules
54 |
55 | ```bash
56 | # Create a build directory
57 | mkdir build
58 | cd build
59 |
60 | # Configure the project with CMake
61 | cmake -DOpenCV_DIR=$OpenCV_DIR ..
62 |
63 | # Build the project
64 | make
65 |
66 | ```
67 |
68 | ```bash
69 | # Run the executable generated by the build process
70 | run-- ./openCV.sln
71 |
72 | ```
73 |
74 | Working
75 |
76 |
User-Defined Headers
77 |
78 | The included header files in this C++ program provide essential functionalities for implementing a facial recognition and voting system using OpenCV. They enable core operations such as image processing (`opencv2/core.hpp`, `opencv2/imgproc.hpp`), GUI interactions (`opencv2/highgui.hpp`), object detection including face detection (`opencv2/objdetect.hpp`), standard input/output operations (`iostream`), file handling (`fstream`, `sstream`), date and time manipulation (`ctime`), dynamic data storage (`vector`, `unordered_set`), and output formatting (`iomanip`). Together, these headers support tasks ranging from capturing video, detecting faces, managing user data, encrypting information, and displaying results, essential for creating a robust application integrating computer vision with data handling in C++.
79 |
80 | Database
81 |
82 | We developed the C++ database using the basic concepts of file handling, ensuring that our data is stored in the specified paths.
83 | SimpleEncryption Class
84 |
85 | A simple encryption class is defined to encrypt and decrypt user data using a XOR-based encryption method.
86 |
87 | Class Created
88 |
89 | The `UserData` class encapsulates information about a user, storing details such as their name, age, CNIC (Pakistan's national identity card number), political party affiliation, and the file path to their image. Meanwhile, the `BlockData` class serves to structure and display block details within a blockchain-inspired voting system, showcasing attributes like hash and timestamp. The `VotingSystem` class integrates functionalities for face detection, user data collection, encryption, file management, and block handling. Its `start()` method initiates video capture via OpenCV, verifies camera accessibility, and displays live video in a window labeled "Face Recognition". It continuously processes frames, detects faces using a pre-trained classifier, prompts for user details upon detection, saves captured images, encrypts and stores user data in files, displays block details for each entry, and manages face data until the user exits via '0' or 'q'. The `getCurrentTimestamp()` method retrieves and returns the current timestamp formatted as %Y-%m-%d %H:%M:%S.
90 | ....
91 |
92 | Main() Function
93 |
94 |
95 | Initializes the path to the face cascade classifier XML file.
96 | Creates an instance of the VotingSystem class and starts the face recognition and data entry process.
97 |
98 | Summary
99 |
100 | The provided C++ code implements a facial recognition and voting system prototype using OpenCV. It integrates face detection, user data collection, encryption, file handling, and block-like data structuring. The program captures live video, detects faces, prompts for user details, stores encrypted user data in files, and displays block details akin to a blockchain system.
101 |
102 |
103 |
104 | 🤝Team Contribution
105 | Minhal Rizvi
106 |
107 | Implemented face detection and real-time video capture functionalities, UML diagram.
108 |
109 | Mesum Raza
110 |
111 | Developed the user data entry and encryption/decryption logic & block details and
112 | documented the project.
113 |
114 | Mufaddal Huzaifa
115 |
116 | Integrated the system and handled the storage of user data and did backend database
117 | with filing
118 |
119 | Muhammad Sameed
120 |
121 | Created the OpenCV functionality code for the frontalface_cascade.xml and the idea
122 | to implement this on Blockchain
123 |
124 | This is our team contribution. A significant aspect is that, in our team, we have two cybersecurity enthusiasts and a very special member who is blind but can see dreams better than anyone else ❤
125 |
126 |
127 |
128 | ⚠️Limitations
129 | Simple Encryption
130 | Face Recognition
131 | No Passkey locker
132 | Difficulty Scaling Issues.
133 |
134 | 🔮Future Enhancements
135 | Advance Encryption
136 | Eyes Identification
137 | Database Integration
138 | Will Use Biometric Machine
139 | GUI Integration
140 |
141 |
142 |
💖Hope you Like our work!
143 |
144 | This project needs a ⭐ from you. Don't forget to leave a star ⭐
145 |
--------------------------------------------------------------------------------
/openCV/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 |
13 | using namespace cv;
14 | using namespace std;
15 |
16 | const string databasePath = "H:/Development/SATS/BlockBallot/Database/";
17 | const string samplePath = "H:/Development/SATS/BlockBallot/ImgSample/";
18 | const string decryptedPath = "H:/Development/SATS/BlockBallot/BlockTum/";
19 |
20 | class SimpleEncryption
21 | {
22 | private:
23 | char key;
24 |
25 | public:
26 | SimpleEncryption(char key) : key(key) {}
27 |
28 | string encrypt(const string& plaintext)
29 | {
30 | string ciphertext = plaintext;
31 | for (size_t i = 0; i < ciphertext.size(); ++i)
32 | {
33 | ciphertext[i] = ciphertext[i] ^ key;
34 | }
35 | return ciphertext;
36 | }
37 |
38 | string decrypt(const string& ciphertext)
39 | {
40 | return encrypt(ciphertext);
41 | }
42 | };
43 |
44 | class UserData
45 | {
46 | private:
47 | string name;
48 | int age;
49 | string cnic;
50 | string politicalParty;
51 | string imagePath;
52 |
53 | public:
54 | UserData(const string& name, int age, const string& cnic, const string& politicalParty, const string& imagePath)
55 | : name(name), age(age), cnic(cnic), politicalParty(politicalParty), imagePath(imagePath) {}
56 |
57 | string getName() const { return name; }
58 | string getCNIC() const { return cnic; }
59 | string getPoliticalParty() const { return politicalParty; }
60 | string getImagePath() const { return imagePath; }
61 |
62 | string encryptData(SimpleEncryption& encryption) const
63 | {
64 | stringstream ss;
65 | ss << "Name: " << name << endl;
66 | ss << "Age: " << age << endl;
67 | ss << "CNIC: " << cnic << endl;
68 | ss << "Political Party: " << politicalParty << endl;
69 | ss << "Image Path: " << imagePath << endl;
70 | string plaintext = ss.str();
71 |
72 | return encryption.encrypt(plaintext);
73 | }
74 |
75 | void decryptData(const string& encryptedData, SimpleEncryption& encryption) const
76 | {
77 | string decryptedText = encryption.decrypt(encryptedData);
78 | cout << "Decrypted Data:\n"
79 | << decryptedText << endl;
80 |
81 | string decryptedFilePath = decryptedPath + "decrypted_user_" + name + ".txt";
82 | ofstream file(decryptedFilePath);
83 | if (file.is_open())
84 | {
85 | file << decryptedText;
86 | file.close();
87 | cout << "Decrypted data saved successfully at: " << decryptedFilePath << endl;
88 | }
89 | else
90 | {
91 | cout << "Unable to open file to save decrypted data!" << endl;
92 | }
93 | }
94 | };
95 |
96 | class BlockData
97 | {
98 | private:
99 | int blockNumber;
100 |
101 | public:
102 | BlockData(int blockNumber) : blockNumber(blockNumber) {}
103 |
104 | void displayBlockDetails(const string& blockHash, const string& timestamp) const
105 | {
106 | cout << "Block Details for Block " << blockNumber << ":" << endl;
107 | cout << "--------------------------" << endl;
108 | cout << "Block Hash: " << blockHash << endl;
109 | cout << "Timestamp: " << timestamp << endl;
110 | cout << "--------------------------" << endl;
111 | }
112 | };
113 |
114 | class VotingSystem
115 | {
116 | private:
117 | CascadeClassifier faceCascade;
118 | vector storedFaces;
119 | vector storedNames;
120 | unordered_set processedFaces;
121 | int blockNumber;
122 |
123 | public:
124 | VotingSystem(const string& faceCascadePath) : faceCascade(faceCascadePath), blockNumber(0) {}
125 |
126 | void start()
127 | {
128 | VideoCapture cap(0);
129 | if (!cap.isOpened())
130 | {
131 | cout << "Error opening video capture!" << endl;
132 | exit(1);
133 | }
134 |
135 | namedWindow("Face Recognition", WINDOW_NORMAL);
136 | resizeWindow("Face Recognition", 800, 600);
137 |
138 | bool continueRecognition = true;
139 |
140 | while (continueRecognition)
141 | {
142 | Mat frame;
143 | cap >> frame;
144 |
145 | resize(frame, frame, Size(frame.cols / 2, frame.rows / 2));
146 |
147 | Mat grayFrame;
148 | cvtColor(frame, grayFrame, COLOR_BGR2GRAY);
149 |
150 | vector faces;
151 | faceCascade.detectMultiScale(grayFrame, faces, 1.1, 3, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));
152 |
153 | for (size_t i = 0; i < faces.size(); ++i)
154 | {
155 | Rect face = faces[i];
156 | rectangle(frame, face, Scalar(0, 255, 0), 2);
157 |
158 | size_t faceHash = hash{}(to_string(face.x) + "_" + to_string(face.y) + "_" + to_string(face.width) + "_" + to_string(face.height));
159 | int faceHashInt = static_cast(faceHash);
160 |
161 | if (processedFaces.count(faceHash) > 0)
162 | {
163 | cout << "Face already processed." << endl;
164 | continue;
165 | }
166 |
167 | Mat newFace = grayFrame(face);
168 |
169 | string name, cnic, politicalParty;
170 | int age = -1;
171 |
172 | cout << "Press 1 to enter details for the detected face and 0 for exit: " << endl;
173 | char userChoice;
174 | cin >> userChoice;
175 |
176 | if (userChoice == '0')
177 | {
178 | continueRecognition = false;
179 | break;
180 | }
181 | if (userChoice == '1')
182 | {
183 | cout << "Enter name for face " << i + 1 << ": ";
184 | cin.ignore();
185 | getline(cin, name);
186 | cout << "Enter age for face " << i + 1 << ": ";
187 | cin >> age;
188 | cin.ignore(numeric_limits::max(), '\n');
189 | cout << "Enter CNIC for face " << i + 1 << ": ";
190 | getline(cin, cnic);
191 | cout << "Enter political party for face " << i + 1 << ": ";
192 | getline(cin, politicalParty);
193 |
194 | string imagePath = samplePath + name + "_" + to_string(time(0)) + ".png";
195 | imwrite(imagePath, newFace);
196 |
197 | UserData user(name, age, cnic, politicalParty, imagePath);
198 | SimpleEncryption encryption('K');
199 |
200 | string encryptedData = user.encryptData(encryption);
201 | string filePath = databasePath + "user_" + name + ".txt";
202 |
203 | ofstream file(filePath);
204 | if (file.is_open())
205 | {
206 | file << encryptedData;
207 | file.close();
208 | cout << "User data saved successfully." << endl;
209 |
210 | cout << "Entered Details:" << endl;
211 | cout << "Name: " << name << endl;
212 | cout << "Age: " << age << endl;
213 | cout << "CNIC: " << cnic << endl;
214 | cout << "Political Party: " << politicalParty << endl;
215 | }
216 | else
217 | {
218 | cout << "Unable to open file to save user data!" << endl;
219 | }
220 |
221 | user.decryptData(encryptedData, encryption); // Decrypt and save decrypted data
222 | BlockData blockData(++blockNumber);
223 | string blockHash = user.getName() + user.getCNIC() + user.getPoliticalParty();
224 | string timestamp = getCurrentTimestamp();
225 | blockData.displayBlockDetails(blockHash, timestamp);
226 |
227 | storedFaces.push_back(newFace.clone());
228 | storedNames.push_back(name);
229 | processedFaces.insert(faceHash);
230 | }
231 | }
232 |
233 | imshow("Face Recognition", frame);
234 | if (waitKey(30) == 'q')
235 | {
236 | break;
237 | }
238 | }
239 |
240 | cap.release();
241 | destroyAllWindows();
242 | }
243 |
244 | private:
245 | string getCurrentTimestamp() const
246 | {
247 | time_t now = time(0);
248 | struct tm timeinfo;
249 | localtime_s(&timeinfo, &now);
250 | char buffer[26];
251 | strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &timeinfo);
252 | return string(buffer);
253 | }
254 | };
255 |
256 | int main()
257 | {
258 | string faceCascadePath = "H:/Development/haarcascade_frontalface_default.xml";
259 | VotingSystem votingSystem(faceCascadePath);
260 | votingSystem.start();
261 |
262 | return 0;
263 | }
264 |
265 |
--------------------------------------------------------------------------------
/openCV/sample.csv:
--------------------------------------------------------------------------------
1 | H:/Development/SATS/BlockBallot/Sample/minhal_1719695732.png
2 | H:/Development/SATS/BlockBallot/Sample/minhal_1719695749.png
3 | H:/Development/SATS/BlockBallot/Sample/usman_1719695775.png
4 | H:/Development/SATS/BlockBallot/Sample/usman_1719695789.png
5 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696254.png
6 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696254.png
7 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696254.png
8 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696254.png
9 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696254.png
10 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696255.png
11 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696256.png
12 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696257.png
13 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696257.png
14 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696257.png
15 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696257.png
16 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696257.png
17 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696257.png
18 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696258.png
19 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696258.png
20 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696258.png
21 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696258.png
22 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696258.png
23 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696258.png
24 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696259.png
25 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696259.png
26 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696259.png
27 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696259.png
28 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696259.png
29 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696259.png
30 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696260.png
31 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696260.png
32 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696260.png
33 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696260.png
34 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696260.png
35 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696260.png
36 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696261.png
37 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696261.png
38 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696261.png
39 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696261.png
40 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696261.png
41 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696261.png
42 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696262.png
43 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696262.png
44 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696262.png
45 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696262.png
46 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696262.png
47 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696263.png
48 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696263.png
49 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696263.png
50 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696263.png
51 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696263.png
52 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696263.png
53 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696264.png
54 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696264.png
55 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696264.png
56 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696264.png
57 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696264.png
58 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696264.png
59 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696265.png
60 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696265.png
61 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696265.png
62 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696265.png
63 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696265.png
64 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696266.png
65 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696266.png
66 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696266.png
67 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696266.png
68 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696266.png
69 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696267.png
70 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696267.png
71 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696267.png
72 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696267.png
73 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696267.png
74 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696267.png
75 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696268.png
76 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696268.png
77 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696268.png
78 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696268.png
79 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696268.png
80 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696268.png
81 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696269.png
82 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696269.png
83 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696269.png
84 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696269.png
85 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696269.png
86 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696270.png
87 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696270.png
88 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696270.png
89 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696270.png
90 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696270.png
91 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696271.png
92 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696271.png
93 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696271.png
94 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696271.png
95 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696271.png
96 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696272.png
97 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696272.png
98 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696272.png
99 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696272.png
100 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696272.png
101 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696272.png
102 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696273.png
103 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696273.png
104 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696273.png
105 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696273.png
106 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696274.png
107 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696274.png
108 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696274.png
109 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696274.png
110 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696274.png
111 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696275.png
112 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696275.png
113 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696275.png
114 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696275.png
115 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696275.png
116 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696276.png
117 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696276.png
118 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696276.png
119 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696276.png
120 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696276.png
121 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696276.png
122 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696277.png
123 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696277.png
124 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696277.png
125 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696277.png
126 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696277.png
127 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696278.png
128 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696278.png
129 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696278.png
130 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696278.png
131 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696278.png
132 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696279.png
133 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696279.png
134 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696279.png
135 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696279.png
136 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696279.png
137 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696280.png
138 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696280.png
139 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696280.png
140 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696280.png
141 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696280.png
142 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696281.png
143 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696281.png
144 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696281.png
145 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696281.png
146 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696281.png
147 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696282.png
148 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696282.png
149 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696282.png
150 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696282.png
151 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696282.png
152 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696283.png
153 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696283.png
154 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696283.png
155 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696283.png
156 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696283.png
157 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696284.png
158 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696284.png
159 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696284.png
160 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696284.png
161 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696284.png
162 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696285.png
163 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696285.png
164 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696285.png
165 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696285.png
166 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696286.png
167 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696286.png
168 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696286.png
169 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696286.png
170 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696286.png
171 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696287.png
172 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696287.png
173 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696287.png
174 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696287.png
175 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696287.png
176 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696288.png
177 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696288.png
178 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696288.png
179 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696288.png
180 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696288.png
181 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696289.png
182 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696289.png
183 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696289.png
184 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696289.png
185 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696289.png
186 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696289.png
187 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696290.png
188 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696290.png
189 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696290.png
190 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696290.png
191 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696291.png
192 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696291.png
193 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696291.png
194 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696292.png
195 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696292.png
196 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696292.png
197 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696292.png
198 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696293.png
199 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696293.png
200 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696293.png
201 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696293.png
202 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696293.png
203 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696294.png
204 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696294.png
205 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696294.png
206 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696294.png
207 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696294.png
208 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696295.png
209 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696295.png
210 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696295.png
211 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696295.png
212 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696295.png
213 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696296.png
214 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696296.png
215 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696296.png
216 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696297.png
217 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696297.png
218 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696297.png
219 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696297.png
220 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696297.png
221 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696298.png
222 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696298.png
223 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696298.png
224 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696298.png
225 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696298.png
226 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696299.png
227 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696299.png
228 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696299.png
229 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696299.png
230 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696299.png
231 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696300.png
232 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696300.png
233 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696300.png
234 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696300.png
235 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696301.png
236 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696301.png
237 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696301.png
238 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696301.png
239 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696302.png
240 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696302.png
241 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696302.png
242 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696302.png
243 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696303.png
244 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696303.png
245 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696303.png
246 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696303.png
247 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696304.png
248 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696304.png
249 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696304.png
250 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696304.png
251 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696305.png
252 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696305.png
253 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696305.png
254 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696305.png
255 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696305.png
256 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696306.png
257 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696306.png
258 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696306.png
259 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696306.png
260 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696306.png
261 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696307.png
262 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696307.png
263 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696307.png
264 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696307.png
265 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696307.png
266 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696308.png
267 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696308.png
268 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696308.png
269 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696308.png
270 | H:/Development/SATS/BlockBallot/Sample/Unknown_1719696309.png
271 | H:/Development/SATS/BlockBallot/Sample/Minhal_1719696431.png
272 | H:/Development/SATS/BlockBallot/Sample/_1719696439.png
273 | H:/Development/SATS/BlockBallot/Sample/Minhal_1719696638.png
274 | H:/Development/SATS/BlockBallot/Sample/Minhal_1719696658.png
275 | H:/Development/SATS/BlockBallot/Sample/fabiha_1719698397.png
276 | H:/Development/SATS/BlockBallot/Sample/mino_1719698504.png
277 | H:/Development/SATS/BlockBallot/Sample/minhal_1719698644.png
278 | H:/Development/SATS/BlockBallot/Sample/0_1719698649.png
279 | H:/Development/SATS/BlockBallot/Sample/minhak_1719699687.png
280 |
--------------------------------------------------------------------------------