Showing
31 changed files
with
1395 additions
and
0 deletions
면담보고서/20200429_면담보고서.jpeg
0 → 100644

716 KB
면담보고서/20200528_면담보고서.jpeg
0 → 100644

769 KB
보고서/~$보고서_2014104089.docx
deleted
100644 → 0
No preview for this file type
보고서/최종보고서_2014104089.pdf
0 → 100644
No preview for this file type
1 | +// !$*UTF8*$! | ||
2 | +{ | ||
3 | + archiveVersion = 1; | ||
4 | + classes = { | ||
5 | + }; | ||
6 | + objectVersion = 50; | ||
7 | + objects = { | ||
8 | + | ||
9 | +/* Begin PBXBuildFile section */ | ||
10 | + B2C21D262492033C00C4BF34 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C21D252492033C00C4BF34 /* AppDelegate.swift */; }; | ||
11 | + B2C21D282492033C00C4BF34 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C21D272492033C00C4BF34 /* SceneDelegate.swift */; }; | ||
12 | + B2C21D2A2492033C00C4BF34 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C21D292492033C00C4BF34 /* ViewController.swift */; }; | ||
13 | + B2C21D2D2492033C00C4BF34 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2C21D2B2492033C00C4BF34 /* Main.storyboard */; }; | ||
14 | + B2C21D2F2492033F00C4BF34 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2C21D2E2492033F00C4BF34 /* Assets.xcassets */; }; | ||
15 | + B2C21D322492033F00C4BF34 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2C21D302492033F00C4BF34 /* LaunchScreen.storyboard */; }; | ||
16 | + B2C21D3A249208FF00C4BF34 /* VideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C21D39249208FF00C4BF34 /* VideoViewController.swift */; }; | ||
17 | +/* End PBXBuildFile section */ | ||
18 | + | ||
19 | +/* Begin PBXFileReference section */ | ||
20 | + B2C21D222492033C00C4BF34 /* ExtractFacialExpression.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ExtractFacialExpression.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
21 | + B2C21D252492033C00C4BF34 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||
22 | + B2C21D272492033C00C4BF34 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; | ||
23 | + B2C21D292492033C00C4BF34 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; }; | ||
24 | + B2C21D2C2492033C00C4BF34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; | ||
25 | + B2C21D2E2492033F00C4BF34 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | ||
26 | + B2C21D312492033F00C4BF34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||
27 | + B2C21D332492033F00C4BF34 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||
28 | + B2C21D39249208FF00C4BF34 /* VideoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoViewController.swift; sourceTree = "<group>"; }; | ||
29 | +/* End PBXFileReference section */ | ||
30 | + | ||
31 | +/* Begin PBXFrameworksBuildPhase section */ | ||
32 | + B2C21D1F2492033C00C4BF34 /* Frameworks */ = { | ||
33 | + isa = PBXFrameworksBuildPhase; | ||
34 | + buildActionMask = 2147483647; | ||
35 | + files = ( | ||
36 | + ); | ||
37 | + runOnlyForDeploymentPostprocessing = 0; | ||
38 | + }; | ||
39 | +/* End PBXFrameworksBuildPhase section */ | ||
40 | + | ||
41 | +/* Begin PBXGroup section */ | ||
42 | + B2C21D192492033C00C4BF34 = { | ||
43 | + isa = PBXGroup; | ||
44 | + children = ( | ||
45 | + B2C21D242492033C00C4BF34 /* extract_facial_expression */, | ||
46 | + B2C21D232492033C00C4BF34 /* Products */, | ||
47 | + ); | ||
48 | + sourceTree = "<group>"; | ||
49 | + }; | ||
50 | + B2C21D232492033C00C4BF34 /* Products */ = { | ||
51 | + isa = PBXGroup; | ||
52 | + children = ( | ||
53 | + B2C21D222492033C00C4BF34 /* ExtractFacialExpression.app */, | ||
54 | + ); | ||
55 | + name = Products; | ||
56 | + sourceTree = "<group>"; | ||
57 | + }; | ||
58 | + B2C21D242492033C00C4BF34 /* extract_facial_expression */ = { | ||
59 | + isa = PBXGroup; | ||
60 | + children = ( | ||
61 | + B2C21D252492033C00C4BF34 /* AppDelegate.swift */, | ||
62 | + B2C21D272492033C00C4BF34 /* SceneDelegate.swift */, | ||
63 | + B2C21D292492033C00C4BF34 /* ViewController.swift */, | ||
64 | + B2C21D2B2492033C00C4BF34 /* Main.storyboard */, | ||
65 | + B2C21D2E2492033F00C4BF34 /* Assets.xcassets */, | ||
66 | + B2C21D302492033F00C4BF34 /* LaunchScreen.storyboard */, | ||
67 | + B2C21D332492033F00C4BF34 /* Info.plist */, | ||
68 | + B2C21D39249208FF00C4BF34 /* VideoViewController.swift */, | ||
69 | + ); | ||
70 | + path = extract_facial_expression; | ||
71 | + sourceTree = "<group>"; | ||
72 | + }; | ||
73 | +/* End PBXGroup section */ | ||
74 | + | ||
75 | +/* Begin PBXNativeTarget section */ | ||
76 | + B2C21D212492033C00C4BF34 /* extract_facial_expression */ = { | ||
77 | + isa = PBXNativeTarget; | ||
78 | + buildConfigurationList = B2C21D362492033F00C4BF34 /* Build configuration list for PBXNativeTarget "extract_facial_expression" */; | ||
79 | + buildPhases = ( | ||
80 | + B2C21D1E2492033C00C4BF34 /* Sources */, | ||
81 | + B2C21D1F2492033C00C4BF34 /* Frameworks */, | ||
82 | + B2C21D202492033C00C4BF34 /* Resources */, | ||
83 | + ); | ||
84 | + buildRules = ( | ||
85 | + ); | ||
86 | + dependencies = ( | ||
87 | + ); | ||
88 | + name = extract_facial_expression; | ||
89 | + productName = extract_facial_expression; | ||
90 | + productReference = B2C21D222492033C00C4BF34 /* ExtractFacialExpression.app */; | ||
91 | + productType = "com.apple.product-type.application"; | ||
92 | + }; | ||
93 | +/* End PBXNativeTarget section */ | ||
94 | + | ||
95 | +/* Begin PBXProject section */ | ||
96 | + B2C21D1A2492033C00C4BF34 /* Project object */ = { | ||
97 | + isa = PBXProject; | ||
98 | + attributes = { | ||
99 | + LastSwiftUpdateCheck = 1150; | ||
100 | + LastUpgradeCheck = 1150; | ||
101 | + ORGANIZATIONNAME = hoya; | ||
102 | + TargetAttributes = { | ||
103 | + B2C21D212492033C00C4BF34 = { | ||
104 | + CreatedOnToolsVersion = 11.5; | ||
105 | + }; | ||
106 | + }; | ||
107 | + }; | ||
108 | + buildConfigurationList = B2C21D1D2492033C00C4BF34 /* Build configuration list for PBXProject "extract_facial_expression" */; | ||
109 | + compatibilityVersion = "Xcode 9.3"; | ||
110 | + developmentRegion = en; | ||
111 | + hasScannedForEncodings = 0; | ||
112 | + knownRegions = ( | ||
113 | + en, | ||
114 | + Base, | ||
115 | + ); | ||
116 | + mainGroup = B2C21D192492033C00C4BF34; | ||
117 | + productRefGroup = B2C21D232492033C00C4BF34 /* Products */; | ||
118 | + projectDirPath = ""; | ||
119 | + projectRoot = ""; | ||
120 | + targets = ( | ||
121 | + B2C21D212492033C00C4BF34 /* extract_facial_expression */, | ||
122 | + ); | ||
123 | + }; | ||
124 | +/* End PBXProject section */ | ||
125 | + | ||
126 | +/* Begin PBXResourcesBuildPhase section */ | ||
127 | + B2C21D202492033C00C4BF34 /* Resources */ = { | ||
128 | + isa = PBXResourcesBuildPhase; | ||
129 | + buildActionMask = 2147483647; | ||
130 | + files = ( | ||
131 | + B2C21D322492033F00C4BF34 /* LaunchScreen.storyboard in Resources */, | ||
132 | + B2C21D2F2492033F00C4BF34 /* Assets.xcassets in Resources */, | ||
133 | + B2C21D2D2492033C00C4BF34 /* Main.storyboard in Resources */, | ||
134 | + ); | ||
135 | + runOnlyForDeploymentPostprocessing = 0; | ||
136 | + }; | ||
137 | +/* End PBXResourcesBuildPhase section */ | ||
138 | + | ||
139 | +/* Begin PBXSourcesBuildPhase section */ | ||
140 | + B2C21D1E2492033C00C4BF34 /* Sources */ = { | ||
141 | + isa = PBXSourcesBuildPhase; | ||
142 | + buildActionMask = 2147483647; | ||
143 | + files = ( | ||
144 | + B2C21D2A2492033C00C4BF34 /* ViewController.swift in Sources */, | ||
145 | + B2C21D262492033C00C4BF34 /* AppDelegate.swift in Sources */, | ||
146 | + B2C21D3A249208FF00C4BF34 /* VideoViewController.swift in Sources */, | ||
147 | + B2C21D282492033C00C4BF34 /* SceneDelegate.swift in Sources */, | ||
148 | + ); | ||
149 | + runOnlyForDeploymentPostprocessing = 0; | ||
150 | + }; | ||
151 | +/* End PBXSourcesBuildPhase section */ | ||
152 | + | ||
153 | +/* Begin PBXVariantGroup section */ | ||
154 | + B2C21D2B2492033C00C4BF34 /* Main.storyboard */ = { | ||
155 | + isa = PBXVariantGroup; | ||
156 | + children = ( | ||
157 | + B2C21D2C2492033C00C4BF34 /* Base */, | ||
158 | + ); | ||
159 | + name = Main.storyboard; | ||
160 | + sourceTree = "<group>"; | ||
161 | + }; | ||
162 | + B2C21D302492033F00C4BF34 /* LaunchScreen.storyboard */ = { | ||
163 | + isa = PBXVariantGroup; | ||
164 | + children = ( | ||
165 | + B2C21D312492033F00C4BF34 /* Base */, | ||
166 | + ); | ||
167 | + name = LaunchScreen.storyboard; | ||
168 | + sourceTree = "<group>"; | ||
169 | + }; | ||
170 | +/* End PBXVariantGroup section */ | ||
171 | + | ||
172 | +/* Begin XCBuildConfiguration section */ | ||
173 | + B2C21D342492033F00C4BF34 /* Debug */ = { | ||
174 | + isa = XCBuildConfiguration; | ||
175 | + buildSettings = { | ||
176 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
177 | + CLANG_ANALYZER_NONNULL = YES; | ||
178 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
179 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||
180 | + CLANG_CXX_LIBRARY = "libc++"; | ||
181 | + CLANG_ENABLE_MODULES = YES; | ||
182 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
183 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
184 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
185 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
186 | + CLANG_WARN_COMMA = YES; | ||
187 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
188 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
189 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
190 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
191 | + CLANG_WARN_EMPTY_BODY = YES; | ||
192 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
193 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
194 | + CLANG_WARN_INT_CONVERSION = YES; | ||
195 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
196 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
197 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
198 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
199 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
200 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
201 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
202 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
203 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
204 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
205 | + COPY_PHASE_STRIP = NO; | ||
206 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
207 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
208 | + ENABLE_TESTABILITY = YES; | ||
209 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
210 | + GCC_DYNAMIC_NO_PIC = NO; | ||
211 | + GCC_NO_COMMON_BLOCKS = YES; | ||
212 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
213 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
214 | + "DEBUG=1", | ||
215 | + "$(inherited)", | ||
216 | + ); | ||
217 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
218 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
219 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
220 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
221 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
222 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
223 | + IPHONEOS_DEPLOYMENT_TARGET = 13.5; | ||
224 | + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||
225 | + MTL_FAST_MATH = YES; | ||
226 | + ONLY_ACTIVE_ARCH = YES; | ||
227 | + SDKROOT = iphoneos; | ||
228 | + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||
229 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
230 | + }; | ||
231 | + name = Debug; | ||
232 | + }; | ||
233 | + B2C21D352492033F00C4BF34 /* Release */ = { | ||
234 | + isa = XCBuildConfiguration; | ||
235 | + buildSettings = { | ||
236 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
237 | + CLANG_ANALYZER_NONNULL = YES; | ||
238 | + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; | ||
239 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; | ||
240 | + CLANG_CXX_LIBRARY = "libc++"; | ||
241 | + CLANG_ENABLE_MODULES = YES; | ||
242 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
243 | + CLANG_ENABLE_OBJC_WEAK = YES; | ||
244 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
245 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
246 | + CLANG_WARN_COMMA = YES; | ||
247 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
248 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
249 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
250 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
251 | + CLANG_WARN_EMPTY_BODY = YES; | ||
252 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
253 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
254 | + CLANG_WARN_INT_CONVERSION = YES; | ||
255 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
256 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
257 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
258 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
259 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
260 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
261 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
262 | + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
263 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
264 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
265 | + COPY_PHASE_STRIP = NO; | ||
266 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
267 | + ENABLE_NS_ASSERTIONS = NO; | ||
268 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
269 | + GCC_C_LANGUAGE_STANDARD = gnu11; | ||
270 | + GCC_NO_COMMON_BLOCKS = YES; | ||
271 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
272 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
273 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
274 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
275 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
276 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
277 | + IPHONEOS_DEPLOYMENT_TARGET = 13.5; | ||
278 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
279 | + MTL_FAST_MATH = YES; | ||
280 | + SDKROOT = iphoneos; | ||
281 | + SWIFT_COMPILATION_MODE = wholemodule; | ||
282 | + SWIFT_OPTIMIZATION_LEVEL = "-O"; | ||
283 | + VALIDATE_PRODUCT = YES; | ||
284 | + }; | ||
285 | + name = Release; | ||
286 | + }; | ||
287 | + B2C21D372492033F00C4BF34 /* Debug */ = { | ||
288 | + isa = XCBuildConfiguration; | ||
289 | + buildSettings = { | ||
290 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
291 | + CODE_SIGN_STYLE = Automatic; | ||
292 | + DEVELOPMENT_TEAM = WEV3B59JPF; | ||
293 | + INFOPLIST_FILE = extract_facial_expression/Info.plist; | ||
294 | + IPHONEOS_DEPLOYMENT_TARGET = 13.2; | ||
295 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
296 | + "$(inherited)", | ||
297 | + "@executable_path/Frameworks", | ||
298 | + ); | ||
299 | + PRODUCT_BUNDLE_IDENTIFIER = com.hoya.ExtractFacialExpression; | ||
300 | + PRODUCT_NAME = ExtractFacialExpression; | ||
301 | + SWIFT_VERSION = 5.0; | ||
302 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
303 | + }; | ||
304 | + name = Debug; | ||
305 | + }; | ||
306 | + B2C21D382492033F00C4BF34 /* Release */ = { | ||
307 | + isa = XCBuildConfiguration; | ||
308 | + buildSettings = { | ||
309 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
310 | + CODE_SIGN_STYLE = Automatic; | ||
311 | + DEVELOPMENT_TEAM = WEV3B59JPF; | ||
312 | + INFOPLIST_FILE = extract_facial_expression/Info.plist; | ||
313 | + IPHONEOS_DEPLOYMENT_TARGET = 13.2; | ||
314 | + LD_RUNPATH_SEARCH_PATHS = ( | ||
315 | + "$(inherited)", | ||
316 | + "@executable_path/Frameworks", | ||
317 | + ); | ||
318 | + PRODUCT_BUNDLE_IDENTIFIER = com.hoya.ExtractFacialExpression; | ||
319 | + PRODUCT_NAME = ExtractFacialExpression; | ||
320 | + SWIFT_VERSION = 5.0; | ||
321 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
322 | + }; | ||
323 | + name = Release; | ||
324 | + }; | ||
325 | +/* End XCBuildConfiguration section */ | ||
326 | + | ||
327 | +/* Begin XCConfigurationList section */ | ||
328 | + B2C21D1D2492033C00C4BF34 /* Build configuration list for PBXProject "extract_facial_expression" */ = { | ||
329 | + isa = XCConfigurationList; | ||
330 | + buildConfigurations = ( | ||
331 | + B2C21D342492033F00C4BF34 /* Debug */, | ||
332 | + B2C21D352492033F00C4BF34 /* Release */, | ||
333 | + ); | ||
334 | + defaultConfigurationIsVisible = 0; | ||
335 | + defaultConfigurationName = Release; | ||
336 | + }; | ||
337 | + B2C21D362492033F00C4BF34 /* Build configuration list for PBXNativeTarget "extract_facial_expression" */ = { | ||
338 | + isa = XCConfigurationList; | ||
339 | + buildConfigurations = ( | ||
340 | + B2C21D372492033F00C4BF34 /* Debug */, | ||
341 | + B2C21D382492033F00C4BF34 /* Release */, | ||
342 | + ); | ||
343 | + defaultConfigurationIsVisible = 0; | ||
344 | + defaultConfigurationName = Release; | ||
345 | + }; | ||
346 | +/* End XCConfigurationList section */ | ||
347 | + }; | ||
348 | + rootObject = B2C21D1A2492033C00C4BF34 /* Project object */; | ||
349 | +} |
No preview for this file type
No preview for this file type
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>SchemeUserState</key> | ||
6 | + <dict> | ||
7 | + <key>extract_facial_expression.xcscheme_^#shared#^_</key> | ||
8 | + <dict> | ||
9 | + <key>orderHint</key> | ||
10 | + <integer>0</integer> | ||
11 | + </dict> | ||
12 | + </dict> | ||
13 | +</dict> | ||
14 | +</plist> |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>SchemeUserState</key> | ||
6 | + <dict> | ||
7 | + <key>extract_facial_expression.xcscheme_^#shared#^_</key> | ||
8 | + <dict> | ||
9 | + <key>orderHint</key> | ||
10 | + <integer>0</integer> | ||
11 | + </dict> | ||
12 | + </dict> | ||
13 | +</dict> | ||
14 | +</plist> |
1 | +// | ||
2 | +// AppDelegate.swift | ||
3 | +// extract_facial_expression | ||
4 | +// | ||
5 | +// Created by Jerry kim on 2020/06/11. | ||
6 | +// Copyright © 2020 hoya. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +@UIApplicationMain | ||
12 | +class AppDelegate: UIResponder, UIApplicationDelegate { | ||
13 | + | ||
14 | + | ||
15 | + | ||
16 | + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { | ||
17 | + // Override point for customization after application launch. | ||
18 | + return true | ||
19 | + } | ||
20 | + | ||
21 | + // MARK: UISceneSession Lifecycle | ||
22 | + | ||
23 | + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { | ||
24 | + // Called when a new scene session is being created. | ||
25 | + // Use this method to select a configuration to create the new scene with. | ||
26 | + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) | ||
27 | + } | ||
28 | + | ||
29 | + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { | ||
30 | + // Called when the user discards a scene session. | ||
31 | + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. | ||
32 | + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. | ||
33 | + } | ||
34 | + | ||
35 | + | ||
36 | +} | ||
37 | + |
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "idiom" : "iphone", | ||
5 | + "scale" : "2x", | ||
6 | + "size" : "20x20" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "iphone", | ||
10 | + "scale" : "3x", | ||
11 | + "size" : "20x20" | ||
12 | + }, | ||
13 | + { | ||
14 | + "idiom" : "iphone", | ||
15 | + "scale" : "2x", | ||
16 | + "size" : "29x29" | ||
17 | + }, | ||
18 | + { | ||
19 | + "idiom" : "iphone", | ||
20 | + "scale" : "3x", | ||
21 | + "size" : "29x29" | ||
22 | + }, | ||
23 | + { | ||
24 | + "idiom" : "iphone", | ||
25 | + "scale" : "2x", | ||
26 | + "size" : "40x40" | ||
27 | + }, | ||
28 | + { | ||
29 | + "idiom" : "iphone", | ||
30 | + "scale" : "3x", | ||
31 | + "size" : "40x40" | ||
32 | + }, | ||
33 | + { | ||
34 | + "idiom" : "iphone", | ||
35 | + "scale" : "2x", | ||
36 | + "size" : "60x60" | ||
37 | + }, | ||
38 | + { | ||
39 | + "idiom" : "iphone", | ||
40 | + "scale" : "3x", | ||
41 | + "size" : "60x60" | ||
42 | + }, | ||
43 | + { | ||
44 | + "idiom" : "ipad", | ||
45 | + "scale" : "1x", | ||
46 | + "size" : "20x20" | ||
47 | + }, | ||
48 | + { | ||
49 | + "idiom" : "ipad", | ||
50 | + "scale" : "2x", | ||
51 | + "size" : "20x20" | ||
52 | + }, | ||
53 | + { | ||
54 | + "idiom" : "ipad", | ||
55 | + "scale" : "1x", | ||
56 | + "size" : "29x29" | ||
57 | + }, | ||
58 | + { | ||
59 | + "idiom" : "ipad", | ||
60 | + "scale" : "2x", | ||
61 | + "size" : "29x29" | ||
62 | + }, | ||
63 | + { | ||
64 | + "idiom" : "ipad", | ||
65 | + "scale" : "1x", | ||
66 | + "size" : "40x40" | ||
67 | + }, | ||
68 | + { | ||
69 | + "idiom" : "ipad", | ||
70 | + "scale" : "2x", | ||
71 | + "size" : "40x40" | ||
72 | + }, | ||
73 | + { | ||
74 | + "idiom" : "ipad", | ||
75 | + "scale" : "1x", | ||
76 | + "size" : "76x76" | ||
77 | + }, | ||
78 | + { | ||
79 | + "idiom" : "ipad", | ||
80 | + "scale" : "2x", | ||
81 | + "size" : "76x76" | ||
82 | + }, | ||
83 | + { | ||
84 | + "idiom" : "ipad", | ||
85 | + "scale" : "2x", | ||
86 | + "size" : "83.5x83.5" | ||
87 | + }, | ||
88 | + { | ||
89 | + "idiom" : "ios-marketing", | ||
90 | + "scale" : "1x", | ||
91 | + "size" : "1024x1024" | ||
92 | + } | ||
93 | + ], | ||
94 | + "info" : { | ||
95 | + "author" : "xcode", | ||
96 | + "version" : 1 | ||
97 | + } | ||
98 | +} |
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "Extract Facial Expression on playing video (2).png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "universal", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "author" : "xcode", | ||
19 | + "version" : 1 | ||
20 | + } | ||
21 | +} |
.png)
27.3 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "backward.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "universal", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "author" : "xcode", | ||
19 | + "version" : 1 | ||
20 | + } | ||
21 | +} |
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "forward.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "universal", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "author" : "xcode", | ||
19 | + "version" : 1 | ||
20 | + } | ||
21 | +} |

12.1 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "pause.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "universal", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "author" : "xcode", | ||
19 | + "version" : 1 | ||
20 | + } | ||
21 | +} |

2.38 KB
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "play.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "universal", | ||
10 | + "scale" : "2x" | ||
11 | + }, | ||
12 | + { | ||
13 | + "idiom" : "universal", | ||
14 | + "scale" : "3x" | ||
15 | + } | ||
16 | + ], | ||
17 | + "info" : { | ||
18 | + "author" : "xcode", | ||
19 | + "version" : 1 | ||
20 | + } | ||
21 | +} |

6.48 KB
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> | ||
3 | + <dependencies> | ||
4 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/> | ||
5 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
6 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
7 | + </dependencies> | ||
8 | + <scenes> | ||
9 | + <!--View Controller--> | ||
10 | + <scene sceneID="EHf-IW-A2E"> | ||
11 | + <objects> | ||
12 | + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||
13 | + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||
14 | + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||
15 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
16 | + <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
17 | + <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> | ||
18 | + </view> | ||
19 | + </viewController> | ||
20 | + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||
21 | + </objects> | ||
22 | + <point key="canvasLocation" x="53" y="375"/> | ||
23 | + </scene> | ||
24 | + </scenes> | ||
25 | +</document> |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> | ||
3 | + <device id="retina5_9" orientation="portrait" appearance="light"/> | ||
4 | + <dependencies> | ||
5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> | ||
6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
7 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
8 | + </dependencies> | ||
9 | + <scenes> | ||
10 | + <!--View Controller--> | ||
11 | + <scene sceneID="tne-QT-ifu"> | ||
12 | + <objects> | ||
13 | + <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="ExtractFacialExpression" customModuleProvider="target" sceneMemberID="viewController"> | ||
14 | + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> | ||
15 | + <rect key="frame" x="0.0" y="0.0" width="375" height="812"/> | ||
16 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
17 | + <subviews> | ||
18 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Extract Facial Expression on playing video" translatesAutoresizingMaskIntoConstraints="NO" id="Sse-ql-HXA"> | ||
19 | + <rect key="frame" x="20" y="184" width="335" height="250"/> | ||
20 | + <constraints> | ||
21 | + <constraint firstAttribute="height" constant="250" id="JOu-92-oyr"/> | ||
22 | + <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="250" id="fZS-S2-tSG"/> | ||
23 | + </constraints> | ||
24 | + </imageView> | ||
25 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zB7-aY-ubm"> | ||
26 | + <rect key="frame" x="172.66666666666666" y="534" width="30" height="30"/> | ||
27 | + <state key="normal" title="Play"/> | ||
28 | + <connections> | ||
29 | + <segue destination="D4g-px-Vch" kind="show" id="ofT-Xb-4te"/> | ||
30 | + </connections> | ||
31 | + </button> | ||
32 | + </subviews> | ||
33 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
34 | + <constraints> | ||
35 | + <constraint firstItem="Sse-ql-HXA" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="140" id="6ND-nd-DHf"/> | ||
36 | + <constraint firstItem="zB7-aY-ubm" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="JHz-a0-WWL"/> | ||
37 | + <constraint firstAttribute="trailing" secondItem="Sse-ql-HXA" secondAttribute="trailing" constant="20" id="Ug1-BD-cPO"/> | ||
38 | + <constraint firstItem="Sse-ql-HXA" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="XTv-iE-JWp"/> | ||
39 | + <constraint firstItem="Sse-ql-HXA" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" constant="20" id="pT3-PT-wAa"/> | ||
40 | + <constraint firstItem="zB7-aY-ubm" firstAttribute="top" secondItem="Sse-ql-HXA" secondAttribute="bottom" constant="100" id="rzh-wI-cwq"/> | ||
41 | + </constraints> | ||
42 | + <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> | ||
43 | + </view> | ||
44 | + </viewController> | ||
45 | + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> | ||
46 | + </objects> | ||
47 | + <point key="canvasLocation" x="133" y="139"/> | ||
48 | + </scene> | ||
49 | + <!--Video View Controller--> | ||
50 | + <scene sceneID="SYy-sc-oJ4"> | ||
51 | + <objects> | ||
52 | + <viewController id="D4g-px-Vch" customClass="VideoViewController" customModule="ExtractFacialExpression" customModuleProvider="target" sceneMemberID="viewController"> | ||
53 | + <view key="view" contentMode="scaleToFill" id="WJS-7U-AZj"> | ||
54 | + <rect key="frame" x="0.0" y="0.0" width="375" height="758"/> | ||
55 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
56 | + <subviews> | ||
57 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yF4-1A-lpn" userLabel="RealTimeView"> | ||
58 | + <rect key="frame" x="0.0" y="225" width="375" height="250"/> | ||
59 | + <subviews> | ||
60 | + <arscnView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GOO-Pa-3H8"> | ||
61 | + <rect key="frame" x="0.0" y="0.0" width="200" height="250"/> | ||
62 | + <constraints> | ||
63 | + <constraint firstAttribute="width" constant="200" id="SzQ-Yi-cr3"/> | ||
64 | + </constraints> | ||
65 | + </arscnView> | ||
66 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ihv-nt-mwe" userLabel="ExpressionView"> | ||
67 | + <rect key="frame" x="200" y="0.0" width="175" height="250"/> | ||
68 | + <subviews> | ||
69 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ncL-g5-JAo"> | ||
70 | + <rect key="frame" x="87.666666666666686" y="200" width="0.0" height="0.0"/> | ||
71 | + <fontDescription key="fontDescription" type="system" pointSize="25"/> | ||
72 | + <nil key="textColor"/> | ||
73 | + <nil key="highlightedColor"/> | ||
74 | + </label> | ||
75 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Show Your Facial Expression" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7l5-9A-CuQ" userLabel="Describe Label"> | ||
76 | + <rect key="frame" x="0.0" y="50" width="175" height="40.666666666666657"/> | ||
77 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
78 | + <nil key="textColor"/> | ||
79 | + <nil key="highlightedColor"/> | ||
80 | + </label> | ||
81 | + </subviews> | ||
82 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
83 | + <constraints> | ||
84 | + <constraint firstItem="7l5-9A-CuQ" firstAttribute="top" secondItem="Ihv-nt-mwe" secondAttribute="top" constant="50" id="0tz-hF-9h7"/> | ||
85 | + <constraint firstItem="ncL-g5-JAo" firstAttribute="centerX" secondItem="Ihv-nt-mwe" secondAttribute="centerX" id="1rZ-Hk-pns"/> | ||
86 | + <constraint firstAttribute="trailing" secondItem="7l5-9A-CuQ" secondAttribute="trailing" id="SQD-ll-Qop"/> | ||
87 | + <constraint firstAttribute="bottom" secondItem="ncL-g5-JAo" secondAttribute="bottom" constant="50" id="UZW-Hi-PwF"/> | ||
88 | + <constraint firstItem="7l5-9A-CuQ" firstAttribute="leading" secondItem="Ihv-nt-mwe" secondAttribute="leading" id="mfU-T7-ZNA"/> | ||
89 | + </constraints> | ||
90 | + </view> | ||
91 | + </subviews> | ||
92 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
93 | + <constraints> | ||
94 | + <constraint firstItem="GOO-Pa-3H8" firstAttribute="leading" secondItem="yF4-1A-lpn" secondAttribute="leading" id="2tI-uk-d6l"/> | ||
95 | + <constraint firstAttribute="bottom" secondItem="Ihv-nt-mwe" secondAttribute="bottom" id="5GY-y6-dZY"/> | ||
96 | + <constraint firstAttribute="height" constant="250" id="EwU-Rs-E1f"/> | ||
97 | + <constraint firstItem="Ihv-nt-mwe" firstAttribute="leading" secondItem="GOO-Pa-3H8" secondAttribute="trailing" id="WGO-06-6nc"/> | ||
98 | + <constraint firstItem="Ihv-nt-mwe" firstAttribute="top" secondItem="yF4-1A-lpn" secondAttribute="top" id="azL-gq-Rje"/> | ||
99 | + <constraint firstAttribute="bottom" secondItem="GOO-Pa-3H8" secondAttribute="bottom" id="jUl-AN-2uk"/> | ||
100 | + <constraint firstItem="GOO-Pa-3H8" firstAttribute="top" secondItem="yF4-1A-lpn" secondAttribute="top" id="rDT-gT-BqA"/> | ||
101 | + <constraint firstAttribute="trailing" secondItem="Ihv-nt-mwe" secondAttribute="trailing" id="xAJ-Rh-NoQ"/> | ||
102 | + </constraints> | ||
103 | + </view> | ||
104 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZhC-D1-7na" userLabel="Expression View1"> | ||
105 | + <rect key="frame" x="0.0" y="475" width="187" height="30"/> | ||
106 | + <subviews> | ||
107 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="49I-NX-neh"> | ||
108 | + <rect key="frame" x="126.66666666666667" y="4.6666666666666856" width="10.333333333333329" height="21"/> | ||
109 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
110 | + <nil key="textColor"/> | ||
111 | + <nil key="highlightedColor"/> | ||
112 | + </label> | ||
113 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="😀" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zv4-Og-q4o" userLabel="Emoji Label1"> | ||
114 | + <rect key="frame" x="40" y="4.6666666666666856" width="23" height="21"/> | ||
115 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
116 | + <nil key="textColor"/> | ||
117 | + <nil key="highlightedColor"/> | ||
118 | + </label> | ||
119 | + </subviews> | ||
120 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
121 | + <constraints> | ||
122 | + <constraint firstAttribute="height" constant="30" id="GjB-HF-3J9"/> | ||
123 | + <constraint firstAttribute="width" constant="187" id="aQ7-Nx-Z1j"/> | ||
124 | + <constraint firstItem="zv4-Og-q4o" firstAttribute="leading" secondItem="ZhC-D1-7na" secondAttribute="leading" constant="40" id="ef4-w8-MYI"/> | ||
125 | + <constraint firstItem="49I-NX-neh" firstAttribute="centerY" secondItem="ZhC-D1-7na" secondAttribute="centerY" id="jcW-78-fbP"/> | ||
126 | + <constraint firstAttribute="trailing" secondItem="49I-NX-neh" secondAttribute="trailing" constant="50" id="qm4-m9-EQI"/> | ||
127 | + <constraint firstItem="zv4-Og-q4o" firstAttribute="centerY" secondItem="ZhC-D1-7na" secondAttribute="centerY" id="x1B-ho-y2y"/> | ||
128 | + </constraints> | ||
129 | + </view> | ||
130 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Bsc-VE-nOz" userLabel="Expression View4"> | ||
131 | + <rect key="frame" x="188" y="505" width="187" height="30"/> | ||
132 | + <subviews> | ||
133 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="😛" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o4y-bW-8BJ" userLabel="Emoji Label4"> | ||
134 | + <rect key="frame" x="40" y="4.6666666666666856" width="23" height="21"/> | ||
135 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
136 | + <nil key="textColor"/> | ||
137 | + <nil key="highlightedColor"/> | ||
138 | + </label> | ||
139 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rc7-qH-1mM"> | ||
140 | + <rect key="frame" x="126.66666666666667" y="4.6666666666666856" width="10.333333333333329" height="21"/> | ||
141 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
142 | + <nil key="textColor"/> | ||
143 | + <nil key="highlightedColor"/> | ||
144 | + </label> | ||
145 | + </subviews> | ||
146 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
147 | + <constraints> | ||
148 | + <constraint firstAttribute="trailing" secondItem="rc7-qH-1mM" secondAttribute="trailing" constant="50" id="2Kl-ma-axf"/> | ||
149 | + <constraint firstItem="o4y-bW-8BJ" firstAttribute="leading" secondItem="Bsc-VE-nOz" secondAttribute="leading" constant="40" id="7zj-mK-t5w"/> | ||
150 | + <constraint firstAttribute="height" constant="30" id="8zn-Sc-256"/> | ||
151 | + <constraint firstAttribute="width" constant="187" id="Dkh-Oi-aGI"/> | ||
152 | + <constraint firstItem="rc7-qH-1mM" firstAttribute="centerY" secondItem="Bsc-VE-nOz" secondAttribute="centerY" id="W9t-Dj-gtu"/> | ||
153 | + <constraint firstItem="o4y-bW-8BJ" firstAttribute="centerY" secondItem="Bsc-VE-nOz" secondAttribute="centerY" id="adB-CV-XeE"/> | ||
154 | + </constraints> | ||
155 | + </view> | ||
156 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UVb-Vr-AMc" userLabel="Expression View3"> | ||
157 | + <rect key="frame" x="0.0" y="505" width="187" height="30"/> | ||
158 | + <subviews> | ||
159 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="😳" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mBl-lr-d8H" userLabel="Emoji Label3"> | ||
160 | + <rect key="frame" x="40" y="4.6666666666666856" width="23" height="21"/> | ||
161 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
162 | + <nil key="textColor"/> | ||
163 | + <nil key="highlightedColor"/> | ||
164 | + </label> | ||
165 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lrd-hK-bdr"> | ||
166 | + <rect key="frame" x="126.66666666666667" y="4.6666666666666856" width="10.333333333333329" height="21"/> | ||
167 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
168 | + <nil key="textColor"/> | ||
169 | + <nil key="highlightedColor"/> | ||
170 | + </label> | ||
171 | + </subviews> | ||
172 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
173 | + <constraints> | ||
174 | + <constraint firstItem="mBl-lr-d8H" firstAttribute="centerY" secondItem="UVb-Vr-AMc" secondAttribute="centerY" id="D1A-fl-If1"/> | ||
175 | + <constraint firstItem="Lrd-hK-bdr" firstAttribute="centerY" secondItem="UVb-Vr-AMc" secondAttribute="centerY" id="Noo-At-eDM"/> | ||
176 | + <constraint firstAttribute="height" constant="30" id="Qpq-SP-rmz"/> | ||
177 | + <constraint firstAttribute="width" constant="187" id="rot-rl-rnW"/> | ||
178 | + <constraint firstItem="mBl-lr-d8H" firstAttribute="leading" secondItem="UVb-Vr-AMc" secondAttribute="leading" constant="40" id="tAy-aE-rf8"/> | ||
179 | + <constraint firstAttribute="trailing" secondItem="Lrd-hK-bdr" secondAttribute="trailing" constant="50" id="twH-Go-mag"/> | ||
180 | + </constraints> | ||
181 | + </view> | ||
182 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6b6-sp-Kkp" userLabel="Expression View2"> | ||
183 | + <rect key="frame" x="188" y="475" width="187" height="30"/> | ||
184 | + <subviews> | ||
185 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="😧" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oPD-7K-hoP" userLabel="Emoji Label2"> | ||
186 | + <rect key="frame" x="40" y="4.6666666666666856" width="23" height="21"/> | ||
187 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
188 | + <nil key="textColor"/> | ||
189 | + <nil key="highlightedColor"/> | ||
190 | + </label> | ||
191 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CWA-Cj-DS7"> | ||
192 | + <rect key="frame" x="126.66666666666667" y="4.6666666666666856" width="10.333333333333329" height="21"/> | ||
193 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
194 | + <nil key="textColor"/> | ||
195 | + <nil key="highlightedColor"/> | ||
196 | + </label> | ||
197 | + </subviews> | ||
198 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
199 | + <constraints> | ||
200 | + <constraint firstItem="oPD-7K-hoP" firstAttribute="leading" secondItem="6b6-sp-Kkp" secondAttribute="leading" constant="40" id="91y-bL-Tgx"/> | ||
201 | + <constraint firstAttribute="trailing" secondItem="CWA-Cj-DS7" secondAttribute="trailing" constant="50" id="CkX-jh-xPX"/> | ||
202 | + <constraint firstItem="CWA-Cj-DS7" firstAttribute="centerY" secondItem="6b6-sp-Kkp" secondAttribute="centerY" id="Gf3-op-6M6"/> | ||
203 | + <constraint firstItem="oPD-7K-hoP" firstAttribute="centerY" secondItem="6b6-sp-Kkp" secondAttribute="centerY" id="hOa-bR-qqM"/> | ||
204 | + <constraint firstAttribute="width" constant="187" id="kyO-7F-j6b"/> | ||
205 | + <constraint firstAttribute="height" constant="30" id="sNb-u6-dno"/> | ||
206 | + </constraints> | ||
207 | + </view> | ||
208 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ETI-CF-ume" userLabel="Expression View5"> | ||
209 | + <rect key="frame" x="0.0" y="535" width="187" height="30"/> | ||
210 | + <subviews> | ||
211 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="🤢" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l6s-5g-m0t" userLabel="Emoji Label5"> | ||
212 | + <rect key="frame" x="40" y="4.6666666666666288" width="23" height="21"/> | ||
213 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
214 | + <nil key="textColor"/> | ||
215 | + <nil key="highlightedColor"/> | ||
216 | + </label> | ||
217 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KvS-wX-pit"> | ||
218 | + <rect key="frame" x="126.66666666666667" y="4.6666666666666288" width="10.333333333333329" height="21"/> | ||
219 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
220 | + <nil key="textColor"/> | ||
221 | + <nil key="highlightedColor"/> | ||
222 | + </label> | ||
223 | + </subviews> | ||
224 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
225 | + <constraints> | ||
226 | + <constraint firstAttribute="width" constant="187" id="3uL-mI-bCh"/> | ||
227 | + <constraint firstItem="l6s-5g-m0t" firstAttribute="leading" secondItem="ETI-CF-ume" secondAttribute="leading" constant="40" id="C5x-jh-kq5"/> | ||
228 | + <constraint firstItem="KvS-wX-pit" firstAttribute="centerY" secondItem="ETI-CF-ume" secondAttribute="centerY" id="H0b-tb-Wrr"/> | ||
229 | + <constraint firstAttribute="height" constant="30" id="Nh5-IZ-EPN"/> | ||
230 | + <constraint firstAttribute="trailing" secondItem="KvS-wX-pit" secondAttribute="trailing" constant="50" id="aiP-pd-cFA"/> | ||
231 | + <constraint firstItem="l6s-5g-m0t" firstAttribute="centerY" secondItem="ETI-CF-ume" secondAttribute="centerY" id="wlv-Z7-1Jx"/> | ||
232 | + </constraints> | ||
233 | + </view> | ||
234 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3JK-f4-SkW" userLabel="Expression View6"> | ||
235 | + <rect key="frame" x="188" y="535" width="187" height="30"/> | ||
236 | + <subviews> | ||
237 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="😊" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2cV-Zc-9uX" userLabel="Emoji Label6"> | ||
238 | + <rect key="frame" x="40" y="4.6666666666666288" width="23" height="21"/> | ||
239 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
240 | + <nil key="textColor"/> | ||
241 | + <nil key="highlightedColor"/> | ||
242 | + </label> | ||
243 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9q1-jD-6X5"> | ||
244 | + <rect key="frame" x="126.66666666666667" y="4.6666666666666288" width="10.333333333333329" height="21"/> | ||
245 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
246 | + <nil key="textColor"/> | ||
247 | + <nil key="highlightedColor"/> | ||
248 | + </label> | ||
249 | + </subviews> | ||
250 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
251 | + <constraints> | ||
252 | + <constraint firstAttribute="height" constant="30" id="5Ip-9N-tzf"/> | ||
253 | + <constraint firstItem="9q1-jD-6X5" firstAttribute="centerY" secondItem="3JK-f4-SkW" secondAttribute="centerY" id="AjH-rS-hMO"/> | ||
254 | + <constraint firstItem="2cV-Zc-9uX" firstAttribute="centerY" secondItem="3JK-f4-SkW" secondAttribute="centerY" id="G2X-1w-nfA"/> | ||
255 | + <constraint firstAttribute="width" constant="187" id="Hk6-2H-5BV"/> | ||
256 | + <constraint firstItem="9q1-jD-6X5" firstAttribute="centerY" secondItem="3JK-f4-SkW" secondAttribute="centerY" id="MJo-9X-HTn"/> | ||
257 | + <constraint firstItem="2cV-Zc-9uX" firstAttribute="leading" secondItem="3JK-f4-SkW" secondAttribute="leading" constant="40" id="Mwq-T9-Lad"/> | ||
258 | + <constraint firstAttribute="trailing" secondItem="9q1-jD-6X5" secondAttribute="trailing" constant="50" id="cx7-gd-jx7"/> | ||
259 | + <constraint firstItem="2cV-Zc-9uX" firstAttribute="centerY" secondItem="3JK-f4-SkW" secondAttribute="centerY" id="czG-6Y-y4O"/> | ||
260 | + </constraints> | ||
261 | + </view> | ||
262 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3ve-a3-NIJ" userLabel="Result View"> | ||
263 | + <rect key="frame" x="0.0" y="565" width="375" height="80"/> | ||
264 | + <subviews> | ||
265 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Result" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Po-2M-1NN"> | ||
266 | + <rect key="frame" x="160.33333333333334" y="28" width="54.666666666666657" height="24"/> | ||
267 | + <fontDescription key="fontDescription" type="system" pointSize="20"/> | ||
268 | + <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
269 | + <nil key="highlightedColor"/> | ||
270 | + </label> | ||
271 | + </subviews> | ||
272 | + <color key="backgroundColor" systemColor="systemTealColor" red="0.35294117650000001" green="0.7843137255" blue="0.98039215690000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> | ||
273 | + <constraints> | ||
274 | + <constraint firstItem="2Po-2M-1NN" firstAttribute="centerX" secondItem="3ve-a3-NIJ" secondAttribute="centerX" id="HD3-Ga-F5M"/> | ||
275 | + <constraint firstItem="2Po-2M-1NN" firstAttribute="centerY" secondItem="3ve-a3-NIJ" secondAttribute="centerY" id="HPS-7H-jNH"/> | ||
276 | + <constraint firstAttribute="height" constant="80" id="i3M-7i-aRk"/> | ||
277 | + </constraints> | ||
278 | + </view> | ||
279 | + </subviews> | ||
280 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
281 | + <constraints> | ||
282 | + <constraint firstItem="yF4-1A-lpn" firstAttribute="leading" secondItem="IHb-Tq-DWS" secondAttribute="leading" id="13e-dG-Vhd"/> | ||
283 | + <constraint firstItem="IHb-Tq-DWS" firstAttribute="trailing" secondItem="3ve-a3-NIJ" secondAttribute="trailing" id="1y8-tT-gIW"/> | ||
284 | + <constraint firstItem="IHb-Tq-DWS" firstAttribute="trailing" secondItem="6b6-sp-Kkp" secondAttribute="trailing" id="Ecn-Yi-tuY"/> | ||
285 | + <constraint firstItem="yF4-1A-lpn" firstAttribute="top" secondItem="IHb-Tq-DWS" secondAttribute="top" constant="225" id="IvY-Xf-Tv3"/> | ||
286 | + <constraint firstItem="6b6-sp-Kkp" firstAttribute="top" secondItem="yF4-1A-lpn" secondAttribute="bottom" id="ODq-jz-bme"/> | ||
287 | + <constraint firstItem="3JK-f4-SkW" firstAttribute="top" secondItem="UVb-Vr-AMc" secondAttribute="bottom" id="OI0-dg-zaq"/> | ||
288 | + <constraint firstItem="UVb-Vr-AMc" firstAttribute="leading" secondItem="WJS-7U-AZj" secondAttribute="leading" id="RgC-5O-SGe"/> | ||
289 | + <constraint firstItem="ETI-CF-ume" firstAttribute="leading" secondItem="WJS-7U-AZj" secondAttribute="leading" id="UlC-Rn-aTB"/> | ||
290 | + <constraint firstItem="IHb-Tq-DWS" firstAttribute="trailing" secondItem="yF4-1A-lpn" secondAttribute="trailing" id="X9u-LU-J2M"/> | ||
291 | + <constraint firstItem="ZhC-D1-7na" firstAttribute="top" secondItem="yF4-1A-lpn" secondAttribute="bottom" id="Yd1-sb-jwL"/> | ||
292 | + <constraint firstItem="ZhC-D1-7na" firstAttribute="leading" secondItem="IHb-Tq-DWS" secondAttribute="leading" id="gKa-dz-XmM"/> | ||
293 | + <constraint firstAttribute="trailing" secondItem="Bsc-VE-nOz" secondAttribute="trailing" id="gnG-og-IrU"/> | ||
294 | + <constraint firstItem="3ve-a3-NIJ" firstAttribute="leading" secondItem="IHb-Tq-DWS" secondAttribute="leading" id="mkh-bb-Z7l"/> | ||
295 | + <constraint firstItem="3ve-a3-NIJ" firstAttribute="top" secondItem="ETI-CF-ume" secondAttribute="bottom" id="mpq-ep-geT"/> | ||
296 | + <constraint firstItem="Bsc-VE-nOz" firstAttribute="top" secondItem="6b6-sp-Kkp" secondAttribute="bottom" id="q7t-ze-bQ8"/> | ||
297 | + <constraint firstItem="ETI-CF-ume" firstAttribute="top" secondItem="Bsc-VE-nOz" secondAttribute="bottom" id="rqz-24-biH"/> | ||
298 | + <constraint firstItem="UVb-Vr-AMc" firstAttribute="top" secondItem="6b6-sp-Kkp" secondAttribute="bottom" id="sXR-9G-q3P"/> | ||
299 | + <constraint firstItem="IHb-Tq-DWS" firstAttribute="trailing" secondItem="3JK-f4-SkW" secondAttribute="trailing" id="uPf-aG-EAm"/> | ||
300 | + </constraints> | ||
301 | + <viewLayoutGuide key="safeArea" id="IHb-Tq-DWS"/> | ||
302 | + </view> | ||
303 | + <navigationItem key="navigationItem" id="Tro-oq-hvX"/> | ||
304 | + <connections> | ||
305 | + <outlet property="expression1" destination="49I-NX-neh" id="QzN-FH-oGW"/> | ||
306 | + <outlet property="expression2" destination="CWA-Cj-DS7" id="9UR-hH-IIa"/> | ||
307 | + <outlet property="expression3" destination="Lrd-hK-bdr" id="oSG-bz-v6A"/> | ||
308 | + <outlet property="expression4" destination="rc7-qH-1mM" id="4nj-d8-So7"/> | ||
309 | + <outlet property="expression5" destination="KvS-wX-pit" id="cSN-4q-mnG"/> | ||
310 | + <outlet property="expression6" destination="9q1-jD-6X5" id="Uxg-zC-oOI"/> | ||
311 | + <outlet property="expressionLabel" destination="ncL-g5-JAo" id="mn0-xt-uyH"/> | ||
312 | + <outlet property="resultLabel" destination="2Po-2M-1NN" id="6y5-wC-Hm9"/> | ||
313 | + <outlet property="sceneView" destination="GOO-Pa-3H8" id="3d5-d6-9Mw"/> | ||
314 | + </connections> | ||
315 | + </viewController> | ||
316 | + <placeholder placeholderIdentifier="IBFirstResponder" id="XNA-rN-fYo" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | ||
317 | + </objects> | ||
318 | + <point key="canvasLocation" x="963.76811594202911" y="138.61607142857142"/> | ||
319 | + </scene> | ||
320 | + </scenes> | ||
321 | + <resources> | ||
322 | + <image name="Extract Facial Expression on playing video" width="767" height="355"/> | ||
323 | + </resources> | ||
324 | +</document> |
소스코드/extract_facial_expression/Info.plist
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>$(DEVELOPMENT_LANGUAGE)</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>$(EXECUTABLE_NAME)</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>$(PRODUCT_NAME)</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>1.0</string> | ||
19 | + <key>CFBundleVersion</key> | ||
20 | + <string>1</string> | ||
21 | + <key>LSRequiresIPhoneOS</key> | ||
22 | + <true/> | ||
23 | + <key>UIApplicationSceneManifest</key> | ||
24 | + <dict> | ||
25 | + <key>UIApplicationSupportsMultipleScenes</key> | ||
26 | + <false/> | ||
27 | + <key>UISceneConfigurations</key> | ||
28 | + <dict> | ||
29 | + <key>UIWindowSceneSessionRoleApplication</key> | ||
30 | + <array> | ||
31 | + <dict> | ||
32 | + <key>UISceneConfigurationName</key> | ||
33 | + <string>Default Configuration</string> | ||
34 | + <key>UISceneDelegateClassName</key> | ||
35 | + <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string> | ||
36 | + <key>UISceneStoryboardFile</key> | ||
37 | + <string>Main</string> | ||
38 | + </dict> | ||
39 | + </array> | ||
40 | + </dict> | ||
41 | + </dict> | ||
42 | + <key>UILaunchStoryboardName</key> | ||
43 | + <string>LaunchScreen</string> | ||
44 | + <key>UIMainStoryboardFile</key> | ||
45 | + <string>Main</string> | ||
46 | + <key>NSCameraUsageDescription</key> | ||
47 | + <string></string> | ||
48 | + <key>UIRequiredDeviceCapabilities</key> | ||
49 | + <array> | ||
50 | + <string>armv7</string> | ||
51 | + <string>arkit</string> | ||
52 | + </array> | ||
53 | + <key>UISupportedInterfaceOrientations</key> | ||
54 | + <array> | ||
55 | + <string>UIInterfaceOrientationPortrait</string> | ||
56 | + <string>UIInterfaceOrientationLandscapeLeft</string> | ||
57 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
58 | + </array> | ||
59 | + <key>UISupportedInterfaceOrientations~ipad</key> | ||
60 | + <array> | ||
61 | + <string>UIInterfaceOrientationPortrait</string> | ||
62 | + <string>UIInterfaceOrientationPortraitUpsideDown</string> | ||
63 | + <string>UIInterfaceOrientationLandscapeLeft</string> | ||
64 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
65 | + </array> | ||
66 | +</dict> | ||
67 | +</plist> |
1 | +// | ||
2 | +// SceneDelegate.swift | ||
3 | +// extract_facial_expression | ||
4 | +// | ||
5 | +// Created by Jerry kim on 2020/06/11. | ||
6 | +// Copyright © 2020 hoya. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class SceneDelegate: UIResponder, UIWindowSceneDelegate { | ||
12 | + | ||
13 | + var window: UIWindow? | ||
14 | + | ||
15 | + | ||
16 | + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { | ||
17 | + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. | ||
18 | + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. | ||
19 | + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). | ||
20 | + guard let _ = (scene as? UIWindowScene) else { return } | ||
21 | + } | ||
22 | + | ||
23 | + func sceneDidDisconnect(_ scene: UIScene) { | ||
24 | + // Called as the scene is being released by the system. | ||
25 | + // This occurs shortly after the scene enters the background, or when its session is discarded. | ||
26 | + // Release any resources associated with this scene that can be re-created the next time the scene connects. | ||
27 | + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). | ||
28 | + } | ||
29 | + | ||
30 | + func sceneDidBecomeActive(_ scene: UIScene) { | ||
31 | + // Called when the scene has moved from an inactive state to an active state. | ||
32 | + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. | ||
33 | + } | ||
34 | + | ||
35 | + func sceneWillResignActive(_ scene: UIScene) { | ||
36 | + // Called when the scene will move from an active state to an inactive state. | ||
37 | + // This may occur due to temporary interruptions (ex. an incoming phone call). | ||
38 | + } | ||
39 | + | ||
40 | + func sceneWillEnterForeground(_ scene: UIScene) { | ||
41 | + // Called as the scene transitions from the background to the foreground. | ||
42 | + // Use this method to undo the changes made on entering the background. | ||
43 | + } | ||
44 | + | ||
45 | + func sceneDidEnterBackground(_ scene: UIScene) { | ||
46 | + // Called as the scene transitions from the foreground to the background. | ||
47 | + // Use this method to save data, release shared resources, and store enough scene-specific state information | ||
48 | + // to restore the scene back to its current state. | ||
49 | + } | ||
50 | + | ||
51 | + | ||
52 | +} | ||
53 | + |
1 | +// | ||
2 | +// VideoViewController.swift | ||
3 | +// extract_facial_expression | ||
4 | +// | ||
5 | +// Created by Jerry kim on 2020/06/11. | ||
6 | +// Copyright © 2020 hoya. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | +import AVFoundation | ||
11 | +import ARKit | ||
12 | + | ||
13 | +class VideoViewController: UIViewController, ARSCNViewDelegate { | ||
14 | + let videoPlayerView = UIView() | ||
15 | + var player: AVPlayer? | ||
16 | + | ||
17 | + public struct emotions { | ||
18 | + let expression: String | ||
19 | + let count: Int | ||
20 | + } | ||
21 | + | ||
22 | + @IBOutlet var sceneView: ARSCNView! | ||
23 | + @IBOutlet weak var expressionLabel: UILabel! | ||
24 | + @IBOutlet weak var expression1: UILabel! // smile | ||
25 | + @IBOutlet weak var expression2: UILabel! // dumbfounded | ||
26 | + @IBOutlet weak var expression3: UILabel! // suprise | ||
27 | + @IBOutlet weak var expression4: UILabel! // nyah | ||
28 | + @IBOutlet weak var expression5: UILabel! // awful | ||
29 | + @IBOutlet weak var expression6: UILabel! // eye smile | ||
30 | + | ||
31 | + @IBOutlet weak var resultLabel: UILabel! // result label | ||
32 | + | ||
33 | + var faceExpression = "" | ||
34 | + var count1 = 0 // smile | ||
35 | + var count2 = 0 // dumbfounded | ||
36 | + var count3 = 0 // suprise | ||
37 | + var count4 = 0 // nyah | ||
38 | + var count5 = 0 // awful | ||
39 | + var count6 = 0 // eye smile | ||
40 | + | ||
41 | + // Sample Videos | ||
42 | + let videos = ["http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", | ||
43 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4", | ||
44 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4", | ||
45 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4", | ||
46 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerFun.mp4", | ||
47 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerJoyrides.mp4", | ||
48 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4", | ||
49 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/SubaruOutbackOnStreetAndDirt.mp4", | ||
50 | + "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/TearsOfSteel.mp4"] | ||
51 | + | ||
52 | + override func viewDidLoad() { | ||
53 | + super.viewDidLoad() | ||
54 | + videoPlayerView.backgroundColor = UIColor.white | ||
55 | + videoPlayerView.translatesAutoresizingMaskIntoConstraints = false | ||
56 | + // Add constraints, pinnning each of the four sides | ||
57 | +// let topConstraint = NSLayoutConstraint(item: videoPlayerView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: 0) | ||
58 | +// let bottomConstraint = NSLayoutConstraint(item: videoPlayerView, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0) | ||
59 | +// let leadingConstraint = NSLayoutConstraint(item: videoPlayerView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0) | ||
60 | +// let trailingConstraint = NSLayoutConstraint(item: videoPlayerView, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) | ||
61 | + | ||
62 | + | ||
63 | + view.addSubview(videoPlayerView) | ||
64 | + | ||
65 | + videoPlayerView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true | ||
66 | + videoPlayerView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true | ||
67 | + videoPlayerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.3).isActive = true | ||
68 | + videoPlayerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true | ||
69 | + | ||
70 | +// view.addConstraints([topConstraint, bottomConstraint, leadingConstraint, trailingConstraint]) | ||
71 | + view.sendSubviewToBack(videoPlayerView) | ||
72 | + | ||
73 | + // for ARSCNView | ||
74 | + guard ARFaceTrackingConfiguration.isSupported else { | ||
75 | + fatalError("Face tracking not available on this on this device model!") | ||
76 | + } | ||
77 | + sceneView.delegate = self | ||
78 | + sceneView.showsStatistics = true | ||
79 | + | ||
80 | +// sceneView.translatesAutoresizingMaskIntoConstraints = false | ||
81 | +// sceneView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true | ||
82 | +// sceneView.topAnchor.constraint(equalToSystemSpacingBelow: videoPlayerView.bottomAnchor, multiplier: 0.3).isActive = true | ||
83 | +// sceneView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.3).isActive = true | ||
84 | + | ||
85 | + } | ||
86 | + | ||
87 | + override var supportedInterfaceOrientations: UIInterfaceOrientationMask { | ||
88 | + // for view video, left landscape | ||
89 | + return .landscapeLeft | ||
90 | + } | ||
91 | + | ||
92 | + func setupVideoPlayer() { // Play random video | ||
93 | + let randNum = arc4random_uniform(9) | ||
94 | + guard let url = URL(string: self.videos[Int(randNum)]) else { | ||
95 | + return | ||
96 | + } | ||
97 | + | ||
98 | + player = AVPlayer(url: url) | ||
99 | + | ||
100 | + let playerLayer = AVPlayerLayer(player: player) | ||
101 | + playerLayer.frame = videoPlayerView.bounds | ||
102 | + videoPlayerView.layer.addSublayer(playerLayer) | ||
103 | + player?.play() | ||
104 | + } | ||
105 | + | ||
106 | + override func viewWillAppear(_ animated: Bool) { | ||
107 | + super.viewWillAppear(animated) | ||
108 | + | ||
109 | + // Create a session configuration | ||
110 | + let configuration = ARFaceTrackingConfiguration() | ||
111 | + | ||
112 | + // Run the view's session | ||
113 | + sceneView.session.run(configuration) | ||
114 | + } | ||
115 | + | ||
116 | + override func viewWillDisappear(_ animated: Bool) { | ||
117 | + super.viewWillDisappear(animated) | ||
118 | + | ||
119 | + // Pause the view's session | ||
120 | + sceneView.session.pause() | ||
121 | + } | ||
122 | + | ||
123 | + override func viewDidAppear(_ animated: Bool) { | ||
124 | + super.viewDidAppear(animated) | ||
125 | + setupVideoPlayer() | ||
126 | + } | ||
127 | + | ||
128 | + func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { | ||
129 | + let faceMesh = ARSCNFaceGeometry(device: sceneView.device!) | ||
130 | + let node = SCNNode(geometry: faceMesh) | ||
131 | + node.geometry?.firstMaterial?.fillMode = .lines | ||
132 | + return node | ||
133 | + } | ||
134 | + | ||
135 | + func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { | ||
136 | + if let faceAnchor = anchor as? ARFaceAnchor, let faceGeometry = node.geometry as? ARSCNFaceGeometry { | ||
137 | + faceGeometry.update(from: faceAnchor.geometry) | ||
138 | + facePoseAnalyzer(anchor: faceAnchor) | ||
139 | + | ||
140 | + DispatchQueue.main.async { | ||
141 | + self.expressionLabel.text = self.faceExpression | ||
142 | + self.expression1.text = String(self.count1) | ||
143 | + self.expression2.text = String(self.count2) | ||
144 | + self.expression3.text = String(self.count3) | ||
145 | + self.expression4.text = String(self.count4) | ||
146 | + self.expression5.text = String(self.count5) | ||
147 | + self.expression6.text = String(self.count6) | ||
148 | + self.extractMost() | ||
149 | + } | ||
150 | + | ||
151 | + } | ||
152 | + } | ||
153 | + | ||
154 | + func extractMost() { | ||
155 | + let structedArray = [ | ||
156 | + emotions(expression: "smile", count: self.count1), | ||
157 | + emotions(expression: "dumbfounded", count: self.count2), | ||
158 | + emotions(expression: "surprise", count: self.count3), | ||
159 | + emotions(expression: "nyah", count: self.count4), | ||
160 | + emotions(expression: "awful", count: self.count5), | ||
161 | + emotions(expression: "eye smile", count: self.count6) | ||
162 | + ] | ||
163 | + let sortedArray = structedArray.sorted(by: {$0.count > $1.count}) | ||
164 | + self.resultLabel.text = sortedArray[0].expression | ||
165 | + | ||
166 | + } | ||
167 | + | ||
168 | + func facePoseAnalyzer(anchor: ARFaceAnchor) { | ||
169 | + let smileLeft = anchor.blendShapes[.mouthSmileLeft] | ||
170 | + let smileRight = anchor.blendShapes[.mouthSmileRight] | ||
171 | + let innerUp = anchor.blendShapes[.browInnerUp] | ||
172 | + let tongue = anchor.blendShapes[.tongueOut] | ||
173 | + let eyeBlinkLeft = anchor.blendShapes[.eyeBlinkLeft] | ||
174 | + let jawOpen = anchor.blendShapes[.jawOpen] | ||
175 | + | ||
176 | + let mouthFrownLeft = anchor.blendShapes[.mouthFrownLeft] | ||
177 | + let mouthFrownRight = anchor.blendShapes[.mouthFrownRight] | ||
178 | + | ||
179 | + var newFaceExpression = "" | ||
180 | + | ||
181 | + if ((smileLeft?.decimalValue ?? 0.0) + (smileRight?.decimalValue ?? 0.0)) > 0.9 { | ||
182 | + newFaceExpression = "😀" | ||
183 | + self.count1 = self.count1 + 1 | ||
184 | + } | ||
185 | + | ||
186 | + if ((jawOpen?.decimalValue ?? 0.0) + (innerUp?.decimalValue ?? 0.0)) > 0.85 { | ||
187 | + newFaceExpression = "😧" | ||
188 | + self.count2 = self.count2 + 1 | ||
189 | + } | ||
190 | + | ||
191 | + | ||
192 | + if innerUp?.decimalValue ?? 0.0 > 0.8 { | ||
193 | + newFaceExpression = "😳" | ||
194 | + self.count3 = self.count3 + 1 | ||
195 | + } | ||
196 | + | ||
197 | + if tongue?.decimalValue ?? 0.0 > 0.08 { | ||
198 | + newFaceExpression = "😛" | ||
199 | + self.count4 = self.count4 + 1 | ||
200 | + } | ||
201 | + | ||
202 | + if (mouthFrownLeft?.decimalValue ?? 0.0) > 0.3 || (mouthFrownRight?.decimalValue ?? 0.0) > 0.3 { | ||
203 | + newFaceExpression = "🤢" | ||
204 | + self.count5 = self.count5 + 1 | ||
205 | + } | ||
206 | + | ||
207 | + | ||
208 | + if eyeBlinkLeft?.decimalValue ?? 0.0 > 0.5 { | ||
209 | + newFaceExpression = "😊" | ||
210 | + self.count6 = self.count6 + 1 | ||
211 | + } | ||
212 | + | ||
213 | + if self.faceExpression != newFaceExpression { | ||
214 | + self.faceExpression = newFaceExpression | ||
215 | + } | ||
216 | + // if cheekPuff?.decimalValue ?? 0.0 > 0.5 { | ||
217 | + // newFaceExpression = "🤢" | ||
218 | + // self.count5 = self.count5 + 1 | ||
219 | + // } | ||
220 | + | ||
221 | + } | ||
222 | + | ||
223 | + func session(_ session: ARSession, didFailWithError error: Error) { | ||
224 | + // Present an error message to the user | ||
225 | + | ||
226 | + } | ||
227 | + | ||
228 | + func sessionWasInterrupted(_ session: ARSession) { | ||
229 | + // Inform the user that the session has been interrupted, for example, by presenting an overlay | ||
230 | + | ||
231 | + } | ||
232 | + | ||
233 | + func sessionInterruptionEnded(_ session: ARSession) { | ||
234 | + // Reset tracking and/or remove existing anchors if consistent tracking is required | ||
235 | + | ||
236 | + } | ||
237 | +} |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
3 | + <device id="retina6_1" orientation="landscape" appearance="light"/> | ||
4 | + <dependencies> | ||
5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/> | ||
6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
7 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
8 | + </dependencies> | ||
9 | + <objects> | ||
10 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
11 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
12 | + <view contentMode="scaleToFill" id="m5W-Np-e6E"> | ||
13 | + <rect key="frame" x="0.0" y="0.0" width="896" height="414"/> | ||
14 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
15 | + <subviews> | ||
16 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2IZ-Qo-Rl0"> | ||
17 | + <rect key="frame" x="425" y="192" width="46" height="30"/> | ||
18 | + <state key="normal" title="Button"/> | ||
19 | + </button> | ||
20 | + </subviews> | ||
21 | + <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||
22 | + <constraints> | ||
23 | + <constraint firstItem="2IZ-Qo-Rl0" firstAttribute="centerY" secondItem="m5W-Np-e6E" secondAttribute="centerY" id="Xpn-17-T2q"/> | ||
24 | + <constraint firstItem="2IZ-Qo-Rl0" firstAttribute="centerX" secondItem="m5W-Np-e6E" secondAttribute="centerX" id="xUd-ag-9LJ"/> | ||
25 | + </constraints> | ||
26 | + <viewLayoutGuide key="safeArea" id="1md-eY-o7C"/> | ||
27 | + <point key="canvasLocation" x="139" y="154"/> | ||
28 | + </view> | ||
29 | + </objects> | ||
30 | +</document> |
1 | +// | ||
2 | +// ViewController.swift | ||
3 | +// extract_facial_expression | ||
4 | +// | ||
5 | +// Created by Jerry kim on 2020/06/11. | ||
6 | +// Copyright © 2020 hoya. All rights reserved. | ||
7 | +// | ||
8 | + | ||
9 | +import UIKit | ||
10 | + | ||
11 | +class ViewController: UIViewController { | ||
12 | + | ||
13 | + override func viewDidLoad() { | ||
14 | + super.viewDidLoad() | ||
15 | + // Do any additional setup after loading the view. | ||
16 | + } | ||
17 | + | ||
18 | + | ||
19 | + | ||
20 | +} | ||
21 | + |
-
Please register or login to post a comment