Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Mobile Vision
funnelbit
August 31, 2016
Technology
0
310
Mobile Vision
funnelbit
August 31, 2016
Tweet
Share
More Decks by funnelbit
See All by funnelbit
Hatena Engineer Seminar #9
funnelbit
5
6.7k
droidkaigi-2017-renovation
funnelbit
10
9.9k
Dart
funnelbit
0
150
BottomBarAndSnackBar
funnelbit
0
250
Dagger2 Optional bindings
funnelbit
0
460
WearableRecyclerView
funnelbit
1
660
QucikSettingsTileAPI
funnelbit
0
300
AwarenessAPI
funnelbit
0
120
Asynchronous Injection
funnelbit
1
200
Other Decks in Technology
See All in Technology
Microsoft Build 2022 - Azure のデータ & 分析サービス 最新アップデート / Microsoft Build 2022 Updates on Azure Data and Analytics Services
nakazax
1
180
新規ゲームのリリース(開発)前からのSRE活動
tmkoikee
1
470
THETA Xの登場はジオ業界を変えるか?
furuhashilab
0
170
LIFF Deep Dive 2022
line_developers
PRO
1
650
數據的多重宇宙 @ LINE Taiwan
line_developers_tw
PRO
0
720
toilを解消した話
asumaywy
0
210
成長を続ける組織でのSRE戦略:プレモーテムによる信頼性の認識共有 SRE Next 2022
niwatakeru
7
2.8k
tfcon-2022-cpp
cpp
5
5.2k
LINE WORKS API 2.0について
mmclsntr
0
130
スクラムマスターの「観察」スキルを掘り下げる / Scrum Fest Niigata 2022
ama_ch
0
780
信頼性の階層の一段目を積み上げる/Monitoring Dashboard
shonansurvivors
0
180
runn is a package/tool for running operations following a scenario. / golang.tokyo #32
k1low
1
230
Featured
See All Featured
Happy Clients
brianwarren
89
5.5k
Practical Orchestrator
shlominoach
178
8.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
236
1M
Music & Morning Musume
bryan
35
4.2k
Code Review Best Practice
trishagee
41
6.8k
4 Signs Your Business is Dying
shpigford
169
20k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
The Art of Programming - Codeland 2020
erikaheidi
32
5.8k
Designing with Data
zakiwarfel
91
3.9k
The Mythical Team-Month
searls
208
39k
Designing the Hi-DPI Web
ddemaree
272
32k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
4
450
Transcript
.PCJMF7JTJPO
ࣗݾհ ଜྋ גࣜձࣾͯͳ )BUFOBGVOOFMCJU 5XJUUFS!FYQFSPQFSP
.PCJMF7JTJPO ࣸਅ͔ΒԿ͔Λநग़͢Δ
.PCJMF7JTJPO w (PPHMF1MBZ4FSWJDFT w pSTUSFMFBTF w (PPHMF1MBZ4FSWJDFT w BEEFE5FYU"1* ɾ
ɾ ɾ
'SBNF
'SBNF w 'SBNF.FUBEBUBͱඥ͍ͨը૾σʔλ Frame frame = new Frame.Builder().setBitmap(bitmap).build();
%FUFDUPS5
%FUFDUPS5 w #BSDPEF%FUFDUPS w 'BDF%FUFDUPS w 5FYU3FDPHOJ[FS w .VMUJ%FUFDUPS
%FUFDUPS5 Frame frame = new Frame.Builder().setBitmap(bitmap).build(); FaceDetector detector = new
FaceDetector.Builder(context) .setProminentFaceOnly(true) .build(); SparseArray<Face> faces = detector.detect(frame); Face face = faces.valueAt(0);
%FUFDUPS5 'SBNF %FUFDUPS 4QBTF"SSBZ5 JUFN JUFN JUFN
5SBDLFS
5SBDLFS w நग़͞ΕͨJUFNͷঢ়ଶมԽΛΔͨΊͷΫϥε private class FaceTracker extends Tracker<Face> { @Override
public void onNewItem(int faceId, Face item) { // item ͷτϥοΩϯά͕։࢝͞Εͨ } @Override public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) { // ͢Ͱʹ։͍࢝ͯ͠Δ item ͕Ξοϓσʔτ͞Εͨ } @Override public void onMissing(FaceDetector.Detections<Face> detectionResults) { // τϥοΩϯάʹࣦഊͨ͠ } @Override public void onDone() { // ͢ͰʹτϥοΩϯά͍ͯͨ͠ item ͕ແ͘ͳΓɺτϥοΩϯά͕ऴྃͨ͠ } }
.VMUJ1SPDFTTPS
.VMUJ1SPDFTTPS w ෳͷݕग़ΛϋϯυϦϯά͠ɺ5SBDLFSʹ௨͢Δ FaceDetector faceDetector = … faceDetector.setProcessor(new MultiProcessor.Builder<>(
new MultiProcessor.Factory<Face>() { @Override public Tracker<Face> create(Face face) { return new FaceTracker(); } } ).build()); cameraSource.build(getApplicationContext(), faceDetector);
.VMUJ1SPDFTTPS 'SBNF .VMUJ1SPDFTTPS 5SBDLFS'BDUPSZ 'SBNF 'SBNF 5SBDLFS 5SBDLFS $BNFSB4PVSDF %FUFDUPS
5SBDLFS 5SBDLFS JUFN JUFN JUFN JUFN
.VMUJ%FUFDUPS
.VMUJ%FUFDUPS w Χϝϥ͔ΒͷೖྗͰಘͨ'SBNFΛ֤%FUFDUPS ʹ͢Δ MultiDetector multiDetector = new MultiDetector.Builder()
.add(faceDetector) .add(barcodeDetector) .build();
.VMUJ%FUFDUPS 'SBNF %FUFDUPS 'SBNF 'SBNF 5SBDLFS 5SBDLFS $BNFSB4PVSDF .VMUJ%FUFDUPS %FUFDUPS
5SBDLFS 5SBDLFS .VMUJ1SPDFTTPS 5SBDLFS'BDUPSZ .VMUJ1SPDFTTPS 5SBDLFS'BDUPSZ JUFN JUFN JUFN JUFN
None
ॴײ w ਫ਼͔ͳΓྑ͍ w ϩʔΧϧͰ݁͢Δͷ݁ߏੌ͍ w ಠࣗॲཧʹͩ͜ΘΒͳ͍ͳΒྑͦ͞͏
ࢀߟ w IUUQTEFWFMPQFSTHPPHMFDPNWJTJPO
͋Γ͕ͱ͏͍͟͝·ͨ͠