Loading...
2017. 3. 1. 12:58

[GP] OpenCV Trackbar ์ฃผ๋ฌด๋ฅด๊ธฐ

์ด ๊ธ€์€ ์ €์˜ Github Page์˜ ๋‚ด์šฉ ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ด์•„์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๋ธ”๋กœ๊ทธ์— ์ €๋„ ๋ชจ๋ฅด๊ฒŒ ์ƒ์พŒํ•œ ๊ธฐ๋ถ„์ด๊ตฐ์š”. ์˜ค๋Š˜์€ Tistory ๋ธ”๋กœ๊ทธ์— ์ด์–ด์„œ, ๊ณ„์† OpenCV ์ฝ”๋“œ ์นดํ…Œ๊ณ ๋ฆฌ ๊ธ€ ์ž‘์„ฑ์„ ๊ณ„์†ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. TrackbarOpenCV์—๋Š” Trackbar๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. (์‚ฌ์‹ค ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ํ•˜๊ธฐ์—๋Š” ์กฐ๊ธˆ ํ ์ด ์žˆ์ง€๋งŒ…) ์—ฌ๋Ÿฌ๋ถ„์ด ์›ํ•˜๋Š” ์˜์ƒ์„ ๋งˆ์šฐ์Šค์˜ ๋“œ๋ž˜๊ทธ๋งŒ์œผ๋กœ ํ˜•์ƒ์„ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด์ง€์š”. ๋ง์”€๋งŒ์œผ๋กœ๋Š” ์„ค๋ช…์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉฐ ์„ค๋ช…์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„ ์‚ฌ์ง„์€ Trackbar๋ฅผ ์›€์ง์—ฌ์„œ ๊ฐ€์šด๋ฐ์— ์›์„ ๊ทธ๋ ค๋†“๊ณ  ๊ทธ ํฌ๊ธฐ๋ฅผ ์ ์  ๋Š˜๋ฆฌ๊ณ  ์ค„์ด๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์–ด์„œ ์ฝ์œผ์‹œ๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„..

2017. 2. 21. 11:46

Mono๋ฅผ ์‚ฌ์šฉํ•œ C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ , ๊ณต๋ถ€๋ฅผ ํ•˜๊ฒŒ ๋œ ์ €๋Š” C#์ด๋ผ๋Š” ์–ธ์–ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  C# ์–ธ์–ด๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ์ •์‹์œผ๋กœ ๋ฐฐ์šด ์–ธ์–ด๋„ ์•„๋‹ˆ์—ˆ๊ณ , ๊ธฐ๊ปํ•œ ๊ฒƒ์ด๋ผ๊ณ ๋Š” Visual Basic ์–ธ์–ด๋ฅผ ํƒˆํ”ผํ•˜๊ณ ์ž ์ž ์‹œ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒƒ ์ •๋„์˜€์Šต๋‹ˆ๋‹ค. Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดC# ์–ธ์–ด์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์ ์–ด๋ณด๊ธฐ ์ „์— ์ด ์–ธ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ๋ถ€ํ„ฐ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.C# ์–ธ์–ด๋Š” Microsoft์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” C++ ์–ธ์–ด ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋ฌธ๋ฒ•์€ C++์™€ Java ๋น„์Šทํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ Java์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. C# ์–ธ์–ด๋Š” Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ .NET Framework์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ตœ์ดˆ .NET Framework 1.0 ๋ฒ„์ „์ด ..

2017. 1. 26. 11:02

chkmd5 (ํŒŒ์ผ MD5 ํ•ด์‹œ๊ฐ’ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœ๊ทธ๋žจ, only Windows OS)

์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋ฅผ ํ•œ ๊ฐœ ๋งŒ๋“ค์–ด๋ดค์Šต๋‹ˆ๋‹ค.ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„, MD5 ํ•ด์‹œ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœ๊ทธ๋žจ์ธ๋ฐ์š”. ๋ช…๋ น์–ด ์‚ฌ์šฉ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์ด๋ฆ„(ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„)์„ ์ž…๋ ฅํ•œ ํ›„, ์›ํ•˜๋Š” ํŒŒ์ผ ํ˜น์€ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ํŒŒ์ผ์˜ MD5 ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค. ํด๋”๋‚˜ ์—†๋Š” ํŒŒ์ผ๋ช…์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ, 5๋ฒˆ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์ค๋‹ˆ๋‹ค. Visual C++๋กœ ๊ฐœ๋ฐœC#์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ์ €๋Š” C++๋กœ ํ•œ ๋ฒˆ ๊ฐœ๋ฐœํ•ด๋ดค๋Š”๋ฐ์š”.Windows์—์„œ ํŒŒ์ผ์˜ ํ•ด์‹œ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์จ๋“œ ํŒŒํ‹ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ œ๊ฐ€ ์•Œ๊ธฐ๋กœ, ์•„๋งˆ ๊ธฐ๋ณธ ๋ช…๋ น์–ด๊ฐ€ ์—†๋Š”์ค„....) ๊ทธ๋ ‡๋‹ค๋ณด๋‹ˆ ๊ทธ๋ƒฅ ์ปค๋งจ๋“œ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ๊ฐํ•ด๋ณด๋‹ค๊ฐ€ ์žฌ๋ฏธ๋กœ ๋งŒ๋“ค์–ด๋ณด๊ณ , ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Win32 API ๋“ฑ W..

2017. 1. 21. 14:27

OpenCV์—์„œ KeyEvent๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž.

OpenCV 3๋ฒˆ์งธ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. OpenCV ํฌ์ŠคํŠธ๋ฅผ ์•ˆ์“ด์ง€๋„ ๊ฝค ์˜ค๋ž˜๋˜์—ˆ๋„ค์š”. ^^; ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์˜์ƒ์— KeyEvent๋ฅผ ๋„ฃ์–ด ํšจ๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋„ฃ์–ด๋ณด๋Š” ์‹ค์Šต์„ ํ•œ ๋ฒˆ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. waitKey ํ•จ์ˆ˜์ง€๋‚œ ํฌ์ŠคํŠธ๋„, ์ฒ˜์Œ์— ํ–ˆ๋˜ ํฌ์ŠคํŠธ์—์„œ๋„, ์˜์ƒ์„ ๋„์šฐ๊ณ , ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ๋Š” ์—ฌํƒœ๊นŒ์ง€ waitKey ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ์กฐ๊ธˆ ๋ˆˆ์น˜๊ฐ€ ์žˆ์œผ์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, ์˜์ƒ์— ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๋ฅผ ์ค„ ๋•Œ๋„ ์ด ํ•จ์ˆ˜๋ฅผ ๋ชจํƒœ๋กœ ๋‚˜๊ฐˆ ๊ฒƒ์ด๋ผ๋Š” ์˜ˆ์ธก์„ ํ•˜์ง€ ์•Š์•˜์„๊นŒ ์ƒ๊ฐํ•ด๋ณด๋Š”๋ฐ์š”. ๋งž์Šต๋‹ˆ๋‹ค. waitKey ํ•จ์ˆ˜์—๋Š” ์ธ์ž๊ฐ’์œผ๋กœ int ํ˜•ํƒœ์˜ ๊ฐ’์„ ๋„ฃ๊ณ , ๊ทธ ๊ฐ’์„ ๋‹ค์‹œ int ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ธ์ž๋กœ ์ฃผ๋Š” int ํ˜• ๊ฐ’์€ ๋ฌด์—‡์ด๊ณ , ์–ด๋–ค ๊ฐ’์„ ๋˜๋Œ๋ ค ๋ฐ›๋Š” ๊ฒƒ์ผ๊นŒ์š”? int wa..

2017. 1. 1. 18:57

SmartDiary - ์ˆ˜์ž…, ์ง€์ถœ ๊ธฐ๋ฐ˜ํ˜• ๋‹ค์ด์–ด๋ฆฌ ํ”„๋กœ๊ทธ๋žจ

SmartDiary ๋ผ๊ณ  ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์†Œ๊ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. What is SmartDiary ?์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋‹จ์ˆœํ•œ ๋‹ค์ด์–ด๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์ด์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ๋‹ค์ด์–ด๋ฆฌ์™€ ๋‹ฌ๋ฆฌ, ๋‹ค์ด์–ด๋ฆฌ์— ์ˆ˜์ž…๊ณผ ์ง€์ถœ์„ ๊ธฐ๋กํ•˜๊ณ , ์›”๋งˆ๋‹ค ์ˆ˜์ž…, ์ง€์ถœ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ ๋‹ค์ด์–ด๋ฆฌ์˜ ์œ ํ˜•์—์„œ ์กฐ๊ธˆ ๋ณ€ํ˜•์‹œํ‚จ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ๋ง๋ถ™์—ฌ์„œ, ์—ฌ๊ธฐ์— ๊ฐ ๋‚ ์งœ์— ๋ฌด์Šจ ์ผ์ •์ด ์žˆ์—ˆ๋Š”์ง€๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ์ผ์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋‰ด๋Š” ์ด 3๊ฐ€์ง€์˜ ๋ฉ”๋‰ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Diary์—์„œ ์ผ๊ธฐ๋ฅผ ์ ์„ ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น Diary์— ์ˆ˜์ž…๊ณผ ์ง€์ถœ์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๋ž€์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์ˆ˜์ž…๊ณผ ์ง€์ถœ์„ ๊ธฐ๋กํ•˜๊ฒŒ ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ํ•ด๋‹น ๋‚ ์งœ์— ๊ธฐ๋ก๋˜์–ด ์žˆ๋Š” ์ˆ˜์ž…๊ณผ ์ง€์ถœ์„ ์›”๋ณ„๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ž๋™์œผ๋กœ ๊ฒฐ์‚ฐํ•ด์ค๋‹ˆ๋‹ค. ๋‹ค์ด์–ด๋ฆฌ๋Š” ๋งˆํฌ์—… ..

2016. 12. 29. 16:08

MVC Pattern์— ๊ธฐ๋ฐ˜ํ•œ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ JavaFX

Java GUI Programming ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” AWT, SWT, Swing, JavaFX๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์˜ ๊ฒฝ์šฐ, AWT์™€ Swing์œผ๋กœ๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ์•„๋งˆ ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, Java์˜ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ข€ ๋‹ต๋‹ตํ•จ์„ ๋งŽ์ด ๋Š๋ผ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ GUI Programming์œผ๋กœ ์ฒ˜์Œ ์ ‘ํ–ˆ๋˜ ๊ฒƒ์€ Visual Basic 6.0 ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฑ๋”ฑํ•˜๊ณ  ๊ณ ์ •์ ์ธ ๋Š๋‚Œ์˜ UI์˜€์ง€๋งŒ ๋ถ„๋ช…ํ•œ ๊ฒƒ์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ด์„œ ๊ต‰์žฅํžˆ ์‰ฝ๋‹ค๋Š” ์ ๊ณผ ๋”๋ถˆ์–ด ๋””์ž์ธ์„ ๊ทธ๋ƒฅ ๋งˆ์šฐ์Šค๋กœ๋งŒ ์™”๋‹ค๊ฐ”๋‹ค ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ์ ์ด ๋งค์šฐ ๋ฉ”๋ฆฌํŠธ ์žˆ์—ˆ์ง€์š”. ๊ทธ๋ฆฌ๊ณ , ๋กœ์ง๋งŒ ์ฝ”๋“œ๋กœ ์งœ๋ฉด, ํ”„๋กœ๊ทธ๋žจ์ด ๊ธˆ๋ฐฉ ๊ฐœ๋ฐœ์ด ๋˜์–ด ์ƒ์‚ฐ์„ฑ์ด ๋งค์šฐ ์ข‹์•˜๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ๋„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ง€๊ธˆ๋„ ์กด์žฌํ•˜๋Š” ์–ธ์–ด์ง€์š”. ํ•˜์ง€๋งŒ ์œ ์ผํ•œ ๋‹จ์ ์€ ..

System Call Function VS Library Call Function

์˜ค๋Š˜ ํฌ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ์ž๋กœ์จ ๋ฐ˜๋“œ์‹œ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผํ•  ๋ถ€๋ถ„ ์ค‘์— ํ•˜๋‚˜๋ฅผ ์จ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์šฐ๋ฆฌ๋Š” ์ฝ˜์†” ํ™”๋ฉด์— ์–ด๋–ค ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์— ์ž…์ถœ๋ ฅ์„ ํ•œ๋‹ค๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๊ฐ๊ฐ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”๋Œ€๋กœ ์ธ์ž๊ฐ’์„ ๋„ฃ๊ณ , ๊ทธ ์ธ์ž๊ฐ’์„ ๋„ฃ์€๋Œ€๋กœ ์ฝ”๋”ฉ์„ ํ•˜๋ฉด ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด ํ•จ์ˆ˜์—๋„ ๋‘ ๊ฐ€์ง€์˜ ์กด์žฌ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ น ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด.... ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋Š” ๋งŒ์•ฝ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์žˆ์ฃ . ๋‹ค๋ฅธ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋„ ์—ญ์‹œ ํŒŒ์ผ์„ ์ฐพ์•„์„œ ์ฝ๊ณ , ํ•ด๋‹น ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์Šค ์ฝ”๋“œ์ด์ฃ . ๋ถ„๋ช… ํ•˜๋Š” ์ผ์€ ๊ฐ™..

2016. 12. 18. 11:27

OpenCV์—์„œ Mouse Event๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž

์ €์—๊ฒŒ ๋งก๊ฒจ์ง„ 3๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ๋ง๊ณ ์‚ฌ๊ฐ€ ๋“œ๋””์–ด ๋์ด๋‚ฌ๋„ค์š”. ์ด๋Ÿฐ์ €๋Ÿฐ ์ผ๋“ค์ด ๋งŽ์•˜์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๋ณด๋‹ˆ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์— ๋Œ€ํ•ด ์†Œํ™€ํ•ด์ง€๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด์„œ OpenCV๋ฅผ ์ด์šฉํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ”๋”ฉ์— ์žˆ์–ด์„œ MouseEvent๋Š” ๋งŽ์ด ๋ณด์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํŠผ ์•ก์…˜, ์ด๋ฒคํŠธ ์ด๋Ÿฐ ๊ฒƒ ๋งŽ์ด ๋ณด์…จ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์˜์ƒ ์ฒ˜๋ฆฌ์—์„œ ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋Š” ์–ด๋–ค ์šฉ๋„๋กœ ์“ฐ์ผ๊นŒ์š”? ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์–ด๋–ค ์˜์ƒ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋งŒ๋“ค์–ด์ง„ ์˜์ƒ์„ IplImage๋‚˜ Mat ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ์˜์ƒ์—์„œ ํ”ฝ์…€์ด ๋ช‡์ธ์ง€ ๊ถ๊ธˆํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. cout์œผ๋กœ Pixel ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ”ฝ์…€ ์ˆ˜ ๋”ฐ๋ผ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์–‘์„ ์ถœ๋ ฅํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฐ์–ด์„œ ์ฝ”๋”ฉ..

2016. 11. 20. 13:13

OpenCV์˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๊ณผ Mat ํด๋ž˜์Šค

C++์—์„œ ์‹œ์ž‘ํ•˜๋Š” OpenCV์— ์ด์–ด์„œ, ์˜ค๋Š˜์€ OpenCV์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. OpenCV๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ปดํ“จํ„ฐ์—์„œ ์˜์ƒ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํฌํ† ์ƒต ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” GRAYSCALEํšจ๊ณผ ๋“ฑ์€ ์ด๋Ÿฐ OpenCV์™€ ๋งค์šฐ ํก์‚ฌํ•˜๋ฉฐ ์ด๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ๋ฌด๋ฃŒ๋กœ ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฐ”๋กœ OpenCV์˜€๋‹ค๋Š” ๊ฒƒ์„ ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Image Processing ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์งˆ๊นŒ์š”? ๊ทธ ์ „์— ์ปดํ“จํ„ฐ์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ฃผ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€๋ถ€ํ„ฐ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„์— ์–ด๋–ค ํ•œ ์‚ฌ์ง„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๊ทธ๋ƒฅ ๊ทธ์ € ์ด๋ฏธ์ง€์ผ ๋ฟ์ด์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋””์ง€ํ„ธํ™”๋œ ์ด๋ฏธ์ง€๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋””์ง€ํ„ธํ™”๋œ ..

2016. 11. 6. 19:43

Ubuntu 16.04 ์—์„œ OpenCV 3.x ์„ค์น˜

OpenCV ์„ค์น˜์— ๋“ค์–ด๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. OpenCV๋Š” OS X, Linux, Windows, Android, iOS ์–ด๋””์„œ๋“ ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ธฐ๊ฐ€ ์ข€ ๊นŒ๋‹ค๋กœ์šด Linux์—์„œ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค์น˜๋ฅผ ์œ„ํ•œ ์ค€๋น„.. Linux์—์„œ OpenCV๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋Š” ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜์™€ ๋‹ฌ๋ฆฌ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋ฐ›์•„์„œ ์ปดํŒŒ์ผํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ค์น˜๋ฅผ ์œ„ํ•ด OpenCV ์†Œ์Šค ์ฝ”๋“œ์™€ ์ปดํŒŒ์ผ ๋„๊ตฌ๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - OpenCV Source Code- build-essential, CMake, GCC- NVIDIA CUDA (Optional) ํ˜น์‹œ ์ž์‹ ์˜ ๋…ธํŠธ๋ถ์ด๋‚˜ PC์— NVIDIA ๊ทธ๋ž˜ํ”ฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด,..

2016. 10. 30. 20:47

C++์—์„œ ์‹œ์ž‘ํ•ด๋ณด๋Š” OpenCV

What is OpenCV? OpenCV๋Š” Open Computer Vision์˜ ์•ฝ์ž๋กœ, ์‹ค์‹œ๊ฐ„ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์— ์ค‘์ ์„ ๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, C, C++, Python ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋ณธ๋ž˜๋Š” Intel์ด ์ฃผ๋„์ ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜€์œผ๋‚˜ ํ˜„์žฌ๋Š” Intel์ด ์ „ํ˜€ ๊ด€์—ฌํ•˜์ง€ ์•Š๊ณ  ์žˆ๊ณ , Open Source Library์ž…๋‹ˆ๋‹ค. ๋ณธ๋ž˜ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชฉ์ ์€ ๊ธฐ๊ณ„์˜ ์‹œ๊ฐ์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ์—ฐ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด์—ˆ๊ณ , ํ˜„์žฌ๋Š” ๋จธ์‹  ๋Ÿฌ๋‹์—์„œ์˜ ์ด๋ฏธ์ง€ ์ธ์‹, ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ๋“ฑ์— ์ด์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ์™ธ์— CCTV์—์„œ ๋ฒ”์ฃ„์ž๋ฅผ ์บ์น˜ํ•˜๊ฑฐ๋‚˜ ์ด์ƒ ํ–‰๋™ ์š”๋ น์„ ๊ฐ์‹œํ•˜๊ณ  ์žˆ๋Š” ์ „๋ฌธ ๋ถ„์•ผ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. How to use OpenCV? OpenCV๋Š” Python, C, C++์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

2016. 10. 23. 18:18

๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•œ Python ์„ค์น˜ - Virtualenv, autoenv

์ด๋ฒˆ์—” Python์„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ์™œ Python์„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์„ค์น˜ํ•ด์•ผ ํ• ๊นŒ์š”? Python์˜ ๋ฒ„์ „์€ ํ˜„์žฌ 2.7 ๋ฒ„์ „๊ณผ 3.x ๋ฒ„์ „์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์กฐ๊ธˆ ํ•ด๋ณด์‹  ๋ถ„๋“ค ์ค‘์— Java ๋ผ๋Š” ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋งŽ์ด ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, ์ด๋Ÿฐ ๋ฒ„์ „์˜ ์ฐจ์ด์— ๊ต‰์žฅํžˆ ๋ฐ˜๊ฐ์„ ํ•˜๊ฑฐ๋‚˜ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ  ์ค‘์— ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๋ฐ”๋กœ "๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ"๋ผ๋Š” ๋…€์„ ๋•Œ๋ฌธ์ด์ฃ . ๋ฌผ๋ก  ๊ณต๊ฐœ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ตœ์‹  ๋ฒ„์ „์— ๋งž์ถฐ ์ˆ˜์ •์ด ๋˜๊ธด ํ•˜์ง€๋งŒ, ์ž์‹ ์ด ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด์ง€ ํ”„๋กœ๊ทธ๋žจ์ด ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์“ฐ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฒ„์ „์„ ๋งž์ถ”๋ ค๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ณ ๋ คํ•ด์•ผ๋  ์‚ฌํ•ญ์ด ๋งŽ์•„์ง‘๋‹ˆ..

2016. 10. 15. 15:22

Python ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜์™€ ๋น„๊ต(3) - PyCharm

์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” PyCharm ์„ค์น˜ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์•„์ง Python์„ ์„ค์น˜ํ•˜์ง€ ๋ชปํ•˜์…จ๋‹ค๊ตฌ์š”? ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. Python ์„ค์น˜ ๋ฐฉ๋ฒ• ๋ณด๊ธฐ JetBrains PyCharmJetBrains ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, ์œ ๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๊ทธ ๋งค๋ ฅ์— ์•„๋งˆ ๋งŽ์ด ๋งค๋ฃŒ๋˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. PyCharm์€ JetBrains์—์„œ ๊ฐœ๋ฐœํ•œ Python ๊ฐœ๋ฐœ IDE ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋‹ค์‹œํ”ผ ์œ ๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด์ง€๋งŒ, ๋ฌด๋ฃŒ๋กœ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋Œ€ํ•™์ƒ์˜ ๊ฒฝ์šฐ, 1๋…„์— ํ•œ ๋ฒˆ ์”ฉ ๋ผ์ด์„ผ์Šค ๊ฐฑ์‹ ์„ ํ†ตํ•ด ์ „ ๊ธฐ๋Šฅ์„ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. PyCharm์€ ๋งค์šฐ ๊น”๋”ํ•œ UI์™€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋„๋ก ์ง€์›ํ•จ๊ณผ ๋™์‹œ์— django ๋“ฑ ์›น ๊ฐœ๋ฐœ์—๋„ ์œ ์šฉํ•˜..

2016. 9. 24. 14:54

Python ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜์™€ ๋น„๊ต(2) - Sublime Text 3

ํฌ์ŠคํŒ…์„ ํ•œ์ง€๊ฐ€ ์ฐธ ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•™๊ต ์ƒํ™œ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ์ค€๋น„์™€ ๊ณผ์ œ๋“ค์ด ์ด๊ฒƒ์ €๊ฒƒ ์Œ“์ด๋‹ค๋ณด๋‹ˆ, ๋ธ”๋กœ๊ทธ ํ™œ๋™์„ ์†Œํ™€ํžˆ ํ•˜๊ฒŒ ๋˜๋„ค์š” ^^; ์˜ค๋Š˜์€ ์ง€๋‚œ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ Python ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์น˜๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„์ง Python์„ ์„ค์น˜ํ•˜์ง€ ๋ชปํ•˜์…จ๋‹ค๊ตฌ์š”? ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. Python ์„ค์น˜ ๋ฐฉ๋ฒ• ๋ณด๊ธฐ Sublime Text ์„œ๋ธŒ๋ผ์ž„ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋Š” Jupyter์™€ ๋‹ฌ๋ฆฌ ์œ ๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด์ด์ง€๋งŒ, ๋ฌด๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ์ •๋ง ์ข‹์€ ๊ฒƒ์€ ์œ ๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๋ฌด๋ฃŒ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ๋Šฅ ์ฐจ๋ณ„์ด ์ „ํ˜€ ์—†์œผ๋ฉฐ ๋‹จ์ง€ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด, ๊ตฌ๋งคํ•ด๋‹ฌ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€๋” ๋ฟŒ๋ ค์ฃผ๋Š” ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค. Sublime Text๋Š” UI๊ฐ€ ..

2016. 9. 6. 14:10

Python ๊ฐœ๋ฐœ ํ™˜๊ฒฝ, ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜์™€ ๋น„๊ต(1) - Jupyter

13๋…„๋„์— ์ œ๊ฐ€ ํ•™๋ถ€ ์ˆ˜์—…์—์„œ Python์„ ์›์–ด ์ˆ˜์—…์œผ๋กœ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋•Œ๋งŒํ•ด๋„ ๊ต์žฌ๊ฐ€ ๊ฑฐ์˜ ๋„คํŠธ์›Œํฌ ๊ต์žฌ ์ˆ˜์ค€์œผ๋กœ ๋‘๊บผ์› ์—ˆ๋Š”๋ฐ ์ˆ˜ํ•™์ ์ธ ๋‚ด์šฉ๋„ ๋งŽ์•˜๊ณ , ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋“ฑ์˜ ๋‚ด์šฉ๋„ ๋งŽ์ด ์žˆ์—ˆ์ง€๋งŒ ํฌ๊ฒŒ ๊ด€์‹ฌ์„ ๊ฐ–์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ตœ๊ทผ์— Machine Learning์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋‹ค์‹œ Python์„ ์ ‘ํ•™๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. ์˜ˆ์ „์—๋„ ๊ทธ๋ ‡์ง€๋งŒ ์ง€๊ธˆ์€ ๋” ๋œจ๊ฑฐ์šด ์–ธ์–ด๊ฐ€ Python์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.. ์–ด๋Š ์ปจํผ๋Ÿฐ์Šค๋‚˜ ๋ฐœํ‘œ๋ฅผ ๊ฐ€๋„ Tensorflow ๋‚ด์ง€ Django์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ๋”๊ตฐ์š”. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Python ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Python ์„ค์น˜์™€ ์‹คํ–‰ Python์€ Linux, Mac OS X, Windows ์–ด๋””์„œ๋“ ์ง€ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ž์œ ๋กœ..

2016. 8. 31. 01:09

HANDLE ๊ตฌ์กฐ์ฒด์™€ Kernel Object๋ฅผ ์ด์šฉํ•œ ์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ง€๋‚œ ํฌ์ŠคํŒ…์— ์ด์–ด ์ด์ œ ๋ณธ๊ฒฉ์ ์ธ ์ฝ”๋”ฉ์— ๋“ค์–ด๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. HANDLE ๊ตฌ์กฐ์ฒด HANDLE ๊ตฌ์กฐ์ฒด๋Š” ์ „ ํฌ์ŠคํŠธ์—์„œ ์ ํ˜€์žˆ์—ˆ๋‹ค์‹œํ”ผ Kernel object๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๋งŒ์•ฝ, ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ฝ๊ฑฐ๋‚˜, ์“ฐ๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ๋Š” ๋ฐ˜๋“œ์‹œ HANDLE ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ๊ฐœ์ฒด๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ณ  ์‹ถ์€์ง€๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. #include int _tmain(int argc, TCHAR* argv[]) { HANDLE hFile = CreateFile(); } ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ, CreateFile API๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ์กด์— ์žˆ๋Š” ํŒŒ์ผ์„ ์ฝ๋˜์ง€, ์•„๋‹ˆ๋ฉด ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์—ฌ WriteFile API๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค..

2016. 8. 29. 21:16

HANDLE ๊ตฌ์กฐ์ฒด์™€ Kernel Object

์ด ๋‚ด์šฉ์„ ์“ฐ๊ธฐ ์ „์— ๋งŽ์ด ๊ณ ๋ฏผ์„ ํ–ˆ๋˜ ๊ฒƒ์€ ๋‹ค๋ฆ„์ด ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์šด์˜์ฒด์ œ ์ปค๋„์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ด์•ผ๊ธฐ๋ฅผ ํฌ์ŠคํŒ…์„ ํ•ด์•ผํ• ๊นŒ, ํ•˜์ง€ ์•Š์•„๋„ ๋ ๊นŒ ๋ผ๋Š” ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ•œ ์ฑ„ ์ด ๋‚ด์šฉ์„ ๋ฐ”๋กœ ๋‹ค์ด๋ ‰ํŠธ๋กœ ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ์ด ํฌ์ŠคํŒ…์„ ๋ณด์‹œ๊ธฐ ์ „์—, ๋ฐ˜๋“œ์‹œ ์šด์˜์ฒด์ œ ์ปค๋„์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ดํ•ด์™€ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ธฐ์ดˆ์ ์ด๊ณ , ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์„ ์ˆ™์ง€ ํ›„, ์ด ํฌ์ŠคํŠธ๋ฅผ ๋ณด์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Kernel Object์ปค๋„ ์˜ค๋ธŒ์ ํŠธ๋ผ๋Š” ๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ ์ปค๋„ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” Windows์—์„œ ์ปค๋„ ์•ˆ์— ์กด์žฌํ•˜๋ฉฐ ๊ทธ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ํ•œ ๋ฒˆ ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ์ปค๋„์—๋Š” ์‹œ์Šคํ…œ์˜ ์šด์˜์„ ์œ„ํ•ด, ํŒŒ์ผ, ํ”„๋กœ์„ธ์Šค, ์“ฐ๋ ˆ๋“œ๊ฐ€ ์กด์žฌ..

2016. 8. 10. 22:34

PHP์—์„œ DBMS๋ฅผ ์—ฐ๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•, PDO

์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋‹ค๋ณด๋ฉด, DBMS์™€ ์—ฐ๋™ํ•ด์•ผ ๋  ์ผ์ด ์ƒ๊น๋‹ˆ๋‹ค. ํŠนํžˆ ๋™์  ์‚ฌ์ดํŠธ ๋“ฑ์˜ ๊ฒŒ์‹œํŒ์„ ์ด์šฉํ•˜๋Š” ์œ ํ˜•์˜ ์‚ฌ์ดํŠธ๋“ค์€ ๋”์šฑ ๊ทธ๋Ÿฌํ•˜์ง€์š”. ์ตœ๊ทผ ์ œ๊ฐ€ ์ƒˆ๋กœ์šด ๋‹จ์ผ ํŽ˜์ด์ง€ ๊ตฌ์ถ•์„ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ, PHP์—์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ DBMS์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋Š”๋ฐ, ์ด ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋ณด๋‹ค ์œ ์šฉํ•˜๋‹ค ์ƒ๊ฐํ•˜์—ฌ ํฌ์ŠคํŒ…ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฐฉ์‹์˜ DBMS ์—ฐ๋™์ €๋Š” PHP ์–ธ์–ด๋ฅผ C ์–ธ์–ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋˜์–ด ์žˆ์–ด์„œ ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ์„ ํƒ์ ์œผ๋กœ DB ์„œ๋ฒ„ ์—ฐ๊ฒฐ์— ์‹คํŒจํ–ˆ์„ ๊ฒฝ์šฐ, ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด php_fpm socket ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์˜ค๋ฅ˜๋ฅผ ๋ฟœ๋Š”๋ฐ, ์›ฌ๋งŒํ•ด์„œ die ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ..