Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
openCVで顔をごにょごにょする#TechLunch
Search
Livesense Inc.
PRO
April 21, 2014
Technology
0
130
openCVで顔をごにょごにょする#TechLunch
openCVで顔をごにょごにょする
2013/02/26 (水) 12:00-13:00 @ Livesense TechLunch
発表者:植村 健太
Livesense Inc.
PRO
April 21, 2014
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
310
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
17
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.4k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
400
26新卒_総合職採用_会社説明資料
livesense
PRO
0
9k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
28k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
12k
中途セールス職_会社説明資料
livesense
PRO
0
250
EM候補者向け転職会議説明資料
livesense
PRO
0
120
Other Decks in Technology
See All in Technology
united airlines ™®️ USA Contact Numbers: Complete 2025 Support Guide
flyunitedhelp
1
310
2025 AWS Jr. Championが振り返るAWS Summit
kazukiadachi
0
110
タイミーのデータモデリング事例と今後のチャレンジ
ttccddtoki
6
2.4k
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
7.6k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
270
Tokyo_reInforce_2025_recap_iam_access_analyzer
hiashisan
0
180
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.2k
Lazy application authentication with Tailscale
bluehatbrit
0
210
What’s new in Android development tools
yanzm
0
310
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
380
SmartNewsにおける 1000+ノード規模 K8s基盤 でのコスト最適化 – Spot・Gravitonの大規模導入への挑戦
vsanna2
0
130
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
How GitHub (no longer) Works
holman
314
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Navigating Team Friction
lara
187
15k
Into the Great Unknown - MozCon
thekraken
40
1.9k
The Language of Interfaces
destraynor
158
25k
Gamification - CAS2011
davidbonilla
81
5.4k
Done Done
chrislema
184
16k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
Transcript
PQFO$7ͰإΛ͝ʹΐ͝ʹΐͯ͠ΈΔ σβΠϯ෦ɹ২ଜݐଠ 142݄26ਫ༵
PQFODWͱ OpenCVʢΦʔϓϯγʔϰΟɺӳޠ: Open Source Computer Vision LibraryʣͱΠϯς ϧ͕։ൃɾެ։ͨ͠ΦʔϓϯιʔεͷίϯϐϡʔλϏδϣϯ͚ϥΠϒϥϦɻ C/C++ɺJavaɺPython͚ʹϥΠϒϥϦ͕͋Δ ίϯϐϡʔλϏδϣϯʢcomputer
visionʣେࡶʹݴͬͯɺʮϩϘοτͷʯΛ࡞ΔݚڀͰ͋Δ 142݄26ਫ༵
Կ͕ग़དྷΔʁ ը૾ॲཧ (Image Processing) ߏղੳ (Structural Analysis) Ϟʔγϣϯղੳͱମ (Motion Analysis
and Object Tracking) ύλʔϯೝࣝ (Pattern Recognition) ΧϝϥΩϟϦϒϨʔγϣϯͱ3࣍ݩ࠶ߏ (Camera Calibration and 3D Reconstruction) ػցֶश ϢʔβΠϯλϑΣʔε 142݄26ਫ༵
ࠓը૾ೝࣝΛ͠·͢ɻ 142݄26ਫ༵
ը૾ೝࣝͬͯԿʁ ίϯϐϡʔλʔ͜ͷը૾إͳͷ͔ɺͳΜͳͷ͔Α͘Θ͔ͬͯͳ͍ͷ ͰͦΕΛڭ͑ͯ͋͛·͢ɻ 142݄26ਫ༵
Ͳ͏ͬͯೝ͍ࣝͯ͠Δʁ 1.ਓͷإͷࣸਅͬͯͷճΓΛ΅͔ͯ͠ݟΔͱɺͦͷ͙͢Լͷͷ͋ͨΓΑΓ҉͍ɻ 2.૭ը૾ͷத͔ΒͷลΓʹͳΔҐஔͷ্Լʹྡ͢ΔԣͷํܗྖҬΛΓग़ͯͦ͠ΕͧΕͷྖҬͷ ໌ͷฏۉΛͱΔɻ 3.্ͷྖҬ͕໌Δͯ͘ԼͷྖҬ͕҉͔ͬͨΒإը૾ͷީิʹ͢Δɻ 4.ඓےͷఱลΑΓඓےͷ྆ͷ໌Δ͞ͷฏۉͷ΄͏͕খ͍͜͞ͱ͕ଟ͍ɻ ʙ إͱͯ͠ೝࣝ ͲΜͲΜإͷީิ͔Β֎͍ͯ͘͠ 142݄26ਫ༵
࣮ࡍʹͬͯΈΔ XJUI 142݄26ਫ༵
PQFO'SBNFXPSLTͬ͘͟Γ ήʔϜͱ͔ΠϯελϨʔγϣϯΛ࡞Δͷʹ͍ͯΔ ΫϩεϓϥοτϑΥʔϜͷ ΞϓϦέʔγϣϯ։ൃϑϨʔϜϫʔΫ 142݄26ਫ༵
142݄26ਫ༵
142݄26ਫ༵
إݕग़ϥΠϒϥϦΛ͏ PG0QFO$7 142݄26ਫ༵
PGY0QFO$Wͷإݕग़ϥΠϒϥϦ ϝϞɿϓϩάϥϜಈ͔͢ 142݄26ਫ༵
void testApp::setup(){ finder.setup("haarcascade_frontalface_alt2.xml"); vid.allocate(CAM_WIDTH, CAM_HEIGHT); gray.allocate(CAM_WIDTH, CAM_HEIGHT); vidGrabber.setVerbose(true); vidGrabber.initGrabber(CAM_WIDTH, CAM_HEIGHT);
} PQFO$7ͷإݕग़ϥΠϒϥϦ 142݄26ਫ༵
void testApp::update(){ vidGrabber.update(); vid.setFromPixels(vidGrabber.getPixels(), CAM_WIDTH, CAM_HEIGHT); vid.convertRgbToHsv(); vid.convertToGrayscalePlanarImage(gray, 2); finder.findHaarObjects(gray);
} 142݄26ਫ༵
void testApp::draw(){ ofSetColor(255,255,255); vidGrabber.draw(0,0); gray.draw(CAM_WIDTH, 0, CAM_WIDTH, CAM_HEIGHT); //ofNoFill(); ofSetColor(255,
255, 0); int numFace = finder.blobs.size(); float x[numFace], y[numFace], w[numFace], h[numFace]; for(int i = 0; i < numFace; i++) { ofRect( finder.blobs[i].boundingRect ); } } 142݄26ਫ༵
ྠֲநग़Λߦ͏ʴিಥఆ PG#PYE PG0QFO$7 142݄26ਫ༵
എܠࠩΛߦ͏ࣄͰྠֲநग़ 142݄26ਫ༵
ͬ͘͟ΓͲ͏͍͏͜ͱ͔ ݕग़͢Δମ͕ͳ͍ঢ়ଶͰɺഎܠը૾Λه͓ͯ͘͠ ݕग़͢ΔମΛؚΊͨݱࡏͷը૾Λೖྗ ه͓͍ͯͨ͠എܠը૾ͱɺݱࡏͱͷࠩΛͱͬͨը૾Λੜ ࠩΛͱͬͨը૾Λഎܠ͔Β͢ΔͨΊɺઃఆͨ͠Λᮢͱ͠ ͯɺനࠇʹۃԽ͢Δ 142݄26ਫ༵
நग़ͨ͠ϥΠϯΛিಥఆʹར༻͢Δ 142݄26ਫ༵
PGY#PYE 142݄26ਫ༵
PGY#PYEͬ͘͟Γ ʮཧΤϯδϯʯ ॏྗিಥɺຎࡲͱ͍ͬͨཧܭࢉΛෳࡶͳܭࢉΛ͢Δ͜ͱͳ͘ར༻Ͱ͖Δ //Box2Dॳظઃఆ box2d.init(); //Box2DͷੈքΛॳظԽ box2d.setGravity(xํͷॏྗ, yํͷॏྗ); box2d.createBounds(0, 0,ɹը໘ͷ෯,ɹը໘ͷߴ͞);
//ը໘ΛนͰғΉ box2d.setFPS(30); //30fpsͰදࣔ box2d.checkBounds(true); Person yuji; yuji.setPhysics(ॏ͞,ൃྗ,ຎࡲྗ); yuji.setup(box2d.getWorld(), x࠲ඪ, y࠲ඪ (, r)); yuji.draw(); #include "ofxBox2d.h" ofxBox2d box2d; vector <ofxBox2dCircle> Person;ɹ//ಈతྻΛ༻͢ΔɻϜμͳϝϞϦফඅΛ͙ ઃఆྫϔομϑΝΠϧଆ ઃఆྫιʔεϑΝΠϧଆ ϝϞɿϓϩάϥϜಈ͔͢ 142݄26ਫ༵
·ͱΊ ofxOpenCvݕग़ϥΠϒϥϦxmlΛಡΈࠐΉ͚ͩͳͷͰݪཧͱ͔͔Βͳͯ͑͘Δɻ͍Ζ͍Ζ Έ߹Θͤͳ͍ͱਫ਼ଟ͕͋Μͳ͍ إೝূϋʔυϧߴ͍ͬ͢ɻຊՈͰͬͨ΄͏͕Αͦ͞͏ addon͕๛ͰɺΈ߹Θͤ࣍ୈͰ͍Ζ͍ΖͰ͖ΔʢMIDI৴߸+ཧԋࢉ+KINECTͱ͔ʣ Έ߹Θͤͳ͍ͱHTML5ͷAPIͱ͋Μ·มΘΜͳ͍ɻ ϝϞϦϦʔΫͨ͠ΒམͪΔɻݶք͕ͲΕ͘Β͍ͳͷ͔Ϗϧυͯ͠Έͳ͍ͱ͔Βͳ͍͠ɺϚγ ϯεϖοΫʹґଘ ͡Ί͔Β៛ີʹઃܭ࣮ͯ͢͠ΔΑΓɺ࡞Γͳ͕Βࢼ͢ʢεέον͢Δʣײ͡Ͱઓͬͨ΄͏ ͕͍͍ɻܭࢉͲ͏Γʹ͍͔ͳ͍͜ͱͷ΄͏͕ଟ͍ɻ
͋·ΓݫີͳϓϩάϥϜؾʹ͠ͳ͍͍ͯ͘Α͏ʹྑ͖ʹܭΒͬͯ͘ΕͯΔͷͰɺϓϩάϥϜ͔ Μͳͯ͘ͳΜͱ͔ͳΔɻ 142݄26ਫ༵
͓ΘΓ openframeworksͰΩϛिϓϩάϥϛϯάʂʂ 142݄26ਫ༵