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
300
株式会社リブセンス・転職会議 採用候補者様向け資料
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
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
300
MobileActOsaka_250704.pdf
akaitadaaki
0
120
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
680
Flutter向けPDFビューア、pdfrxのpdfium WASM対応について
espresso3389
0
130
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
7
1.1k
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
280
OPENLOGI Company Profile for engineer
hr01
1
34k
Reach American Airlines®️ Instantly: 19 Calling Methods for Fast Support in the USA
flyamerican
1
160
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
230
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
300
United airlines®️ USA Contact Numbers: Complete 2025 Support Guide
unitedflyhelp
0
310
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
270
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Site-Speed That Sticks
csswizardry
10
690
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Music & Morning Musume
bryan
46
6.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
Making Projects Easy
brettharned
116
6.3k
Unsuck your backbone
ammeep
671
58k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
The World Runs on Bad Software
bkeepers
PRO
69
11k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
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ਫ༵