Skip to content

Instantly share code, notes, and snippets.

View Curookie's full-sized avatar
๐Ÿ 
Working from home

Curookie Curookie

๐Ÿ 
Working from home
View GitHub Profile
@Curookie
Curookie / OpenCV
Last active November 9, 2021 14:33
OpenCV
OpenCV
์ปดํ“จํ„ฐ ๋น„์ „ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
[๊ตฌ์„ฑ]
build/include : ํ—ค๋”ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ. (.hpp, .h)
build/install/x64/vc14/lib : x64ํ™˜๊ฒฝ Visual Studio 2015์šฉ(vc14) OpenCV Debug/Release ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ (.lib)
build/install/x64/vc14/bin : x64ํ™˜๊ฒฝ Visual Studio 2015์šฉ(vc14) OpenCV Debug/Release ๋™์  ์—ฐ๊ฒฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ (.dll)
ovencv_world_341d.dll -> d๋Š” debug์šฉ ํŒŒ์ผ (์ด ํŒŒ์ผ์€ ํ•˜๋‚˜๋กœ ๋ชจ์•„๋‘” dll ํŒŒ์ผ [์„ค์น˜๋ฒ•]4.์—์„œBUILD_OPENCV_WORLD )
build\etc : haarcascades, lbpcascades XML ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ (.xml)
gitHub์—์„œ repo๋งŒ๋“ค๊ธฐ, public์œผ๋กœ ๋งŒ๋“ค๊ฑฐ๋ฉด[==๋ˆ ์•ˆ๋‚ด๊ณ  ๋งŒ๋“ค๊ฑฐ๋ฉด] ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ [์ž๊ธฐ์•„์ด๋””].github.io readme์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ
git bash ์„ค์น˜ git bash ๋“ค์–ด๊ฐ€์„œ git ์ด๋ฉ”์ผ, SSH ์„ค์ •ํ›„
nvm ์„ค์น˜
npm ์„ค์น˜
hexo ์„ค์น˜ npm install hexo-cli -g
๊ฐœ์š”?
- gradle์€ maven๊ณผ ์–‘๋Œ€์‚ฐ๋งฅ์œผ๋กœ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ๋…€์„์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. Maven๊ณผ Ivy๋ฅผ ์ง€์›ํ•œ๋‹ค.
- JAVA๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๋นŒ๋“œ ๋‹จ๊ณ„๋Š” task๋กœ ์ •์˜ํ•˜๋ฉฐ, ์ƒ๋‹น๋ถ€๋ถ„ Closure๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
๋ญ๋‹ˆ?
- build.gradle ์ด๋ผ๋Š” ํŒŒ์ผ์•ˆ์— gradle๋ฌธ๋ฒ•(Groovy)์œผ๋กœ ์š”์ฒญํ•œ๋Œ€๋กœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด์ค€๋‹ค.
+ settings.gradle ํŒŒ์ผ์€ ์‹ฑ๊ธ€ํ”„๋กœ์ ํŠธ or ๋ฉ€ํ‹ฐํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์ •์˜ ํ•˜๋Š” ํŒŒ์ผ.
์™œ ํ•„์š”?
@Curookie
Curookie / IntelliJ IDEA.md
Last active May 1, 2019 10:44
IDE, ๊ฐœ๋ฐœํ™˜๊ฒฝ, IntelliJ

์„ค์น˜

Toolbox App๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•˜๋Š”๊ฒƒ ์ถ”์ฒœ(๋‹ค๋ฅธ ์•ฑ ์„ค์น˜ํ•˜๊ธฐ ํŽธํ•จ, Settings์—์„œ ํž™์‚ฌ์ด์ฆˆ๋‚˜ Update ์ผ๋ฐ˜๋ฆด๋ฆฌ์ฆˆ, ํ”„๋ฆฌ๋ทฐ๋ฆด๋ฆฌ์ฆˆ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.)
Community ๋ฒ„์ „ Web์— ๊ด€๋ จ๋œ๊ฑด ๊ธฐ๋Šฅ์€ ์ง€์›์—†๋‹ค. (์„œ๋ธ”๋ฆฟ, ํ†ฐ์บฃ, ์Šคํ”„๋ง, ์Šคํ”„๋ง๋ถ€ํŠธ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ์€ ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์ง€์›X)
Ultimate ๋ฒ„์ „์€ ์›น ๊ด€๋ จ๋œ๊ฒƒ์„ ๋‹ค ์ง€์›ํ•œ๋‹ค.


์‹คํ–‰

๋ชจ๋“  ๊ฒฝ์šฐ Maven์ด๋‚˜ Gradle๋กœ ํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“œ๋Š” ๊ฒŒ ์ข‹๋‹ค.
Gradle>

@Curookie
Curookie / Piet Language (์ด๋ฏธ์ง€ ์–ธ์–ด)
Last active December 24, 2018 13:59
๋‚ญ๋งŒ์ ์ธ ์ด๋ฏธ์ง€ ์–ธ์–ด Piet!
๋„ค๋œ๋ž€๋“œ์˜ ํ™”๊ฐ€์ธ ํ”ผํŠธ ๋ชฌ๋“œ๋ฆฌ์•ˆ(Piet Mondrian)์˜ ์ด๋ฆ„์„ ๋”ด ์ด ์–ธ์–ด๋Š” ๋น„ํŠธ ์ด๋ฏธ์ง€๋กœ ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ์ˆ ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๋А๋‚Œ์ด๋ผ์„œ ๋„ˆ๋ฌด ๋งค๋ ฅ์ ์ด๋‹ค. (~ํ”„๋กœํฌ์ฆˆ ํ• ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜๋„?~)
โ˜… ์‹œ์ž‘
https://www.bertnase.de/npiet/ ์—ฌ๊ธฐ์„œ ์ตœ์‹  IDE์…‹์„ ๋ฐ›๋Š”๋‹ค.
(2018/10 ๊ธฐ์ค€) npiet-1.3e.tar.gz ํŒŒ์ผ ๋ฐ›์œผ๋ฉด ๋จ.
๋งŒ๋“ค๋ฉด์„œ ๋А๋‚€์ ์€ ์ œ์ž‘ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ„๋‹จํ•˜๋‹ค.
1. ๋งŒ๋“ค ๊ทธ๋ฆผ์„ ์ƒ๊ฐํ•œ๋‹ค.
2. ๋งŒ๋“ค ๋ฌธ๊ตฌ(ํ”„๋กœ๊ทธ๋žจ)์„ ์ƒ๊ฐํ•œ๋‹ค.
โ–  ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ, ํƒ์ƒ‰ ๊ธฐ๋Šฅ ํ•ฉ์ณ์ง„ ๋Ÿฐ์ณ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ.
์ด ๊ธ€์€ WOX์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Alfred๋Š” ๊ตฌ๊ธ€๋ง
โ–  ์ด๊ฑธ ์™œ ์“ฐ๋ƒ?
- ์ด๊ฑฐ ์„ค์น˜ํ•ด๋‘๋ฉด ๋ฐ”ํƒ•ํ™”๋ฉด์— ๋ฐ”๋กœ๊ฐ€๊ธฐ ์•„์ด์ฝ˜์ด ํ•„์š”์—†๋‹น, ์ž‘์—…ํ‘œ์‹œ์ค„์—๋„ ํ”„๋กœ๊ทธ๋žจ ์•„์ด์ฝ˜ ๋‚˜์—ดํ•  ํ•„์š”์—†์Œ.
- ๋งˆ์šฐ์Šค(๋”ธ๊น๋”ธ๊น์†Œ๋ฆฌ)์™€ ํ‚ค๋ณด๋“œ๋กœ ์ฐพ๋Š” ์‹œ๊ฐ„์„ ์ค„์ธ๋‹ค.
Alt+Space๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ๊ฒŒ ๊ฐ€๋Šฅํ•œ ๊ฒ€์ƒ‰(์ปค๋งจ๋“œ) ์ฐฝ์ด ๋œจ๊ณ  ํ‚ค๋ณด๋“œ๋งŒ์œผ๋กœ ๋ชจ๋“  ๊ฑธ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ๋‹ค.
- ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ - ์ฃผ์š” ์‚ฌ์šฉ๊ธฐ๋Šฅ PP
- ์‹œ์Šคํ…œ ์ข…๋ฃŒ, ์žฌ๋ถ€ํŒ…, ์ ˆ์ „๋ชจ๋“œ ํ‚ค๋ณด๋“œ๋งŒ์œผ๋กœ ๊ฐ€๋Šฅ.
์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปดํŒŒ์ผ์‹œ ์‹คํ–‰ํŒŒ์ผ์— ํฌํ•จ๋˜๋ฉฐ,
๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‹คํ–‰์‹œ ์‹คํ–‰ํŒŒ์ผ์— ํฌํ•จ๋œ๋‹ค.
์ปดํŒŒ์ผ์‹œ ํฌํ•จ๋˜๋Š” ๊ฒƒ๊ณผ, ์‹คํ–‰์‹œ ํฌํ•จ๋˜๋Š”๊ฒƒ์— ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ?
์‹คํ–‰ํŒŒ์ผ์ด 1๋ฉ”๊ฐ€, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ 100๋ฉ”๊ฐ€์˜ ์šฉ๋Ÿ‰์˜ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
acos(๋‹จ์œ„๋ฐฑํ„ฐ์˜ ๋‚ด์ )
1. ๋ฒกํ„ฐ์˜ ๋‚ด์ 
๋‘ ๋ฒกํ„ฐ v1 = (x1,y1), v2 = (x2,y2)์— ๋Œ€ํ•ด ๊ทธ ์‚ฌ์ด๊ฐ์„ ฮธ๋ผ ํ–ˆ์„ ๋•Œ, ๋‘ ๋ฒกํ„ฐ์˜ ๋‚ด์ (inner product ๋˜๋Š” dot product)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋จ
๋Œ€์ˆ˜์  v1*v2 = x1*x2 + y1*y2
๊ธฐํ•˜ํ•™์  v1*v2 = |v1|*|v2|*cos@
์‹ (1)์—์„œ x1x2 + y1y2 = |v1||v2|cosฮธ ๊ฐ€ ์„ฑ๋ฆฝํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์Œ (๋‹จ, |v|๋Š” ๋ฒกํ„ฐ v์˜ ํฌ๊ธฐ).
์˜ค์ผ๋Ÿฌ(Euler)์™€ ์ฟผํ„ฐ๋‹ˆ์˜จ(Quaternion)์€ 3D ๋ณ€ํ™˜์—์„œ ํšŒ์ „์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์˜ค์ผ๋Ÿฌ๋Š” 3๊ฐœ์˜ ์ถ•์— ๋Œ€ํ•œ ๊ฐ๋„๋ฅผ ํšŒ์ „ ์ •๋ณด๋กœ ์‚ฌ์šฉํ•œ๋‹ค. X,Y,Z์ถ•์— ๋Œ€ํ•ด ํšŒ์ „ํ•œ ๋งŒํผ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์˜ค์ผ๋Ÿฌ์—์„œ๋Š” ๊ฐ ์ถ•์„ Right, Up, Forward๋ผ ๋ถ€๋ฅด๊ณ  ๊ฐ ์ถ•์— ๋Œ€ํ•œ ๊ฐ๋„๋ฅผ Pitch, Roll, Yaw๋ผ ๋ถ€๋ฅธ๋‹ค.
์ด ๋ฐฉ์‹์€ ๋น„ํ–‰๊ธฐ์˜ ์ž์„ธ ํ‘œํ˜„ ์ •๋ณด๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.
์ด ๋ฐฉ์‹์˜ ์žฅ์ ์€ ๋งค์šฐ ์ง๊ด€์ ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
์ด ์žฅ์ ๋•Œ๋ฌธ์— ๋งŽ์€ 3D๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ์€ ํšŒ์ „ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ๋•Œ Euler๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
์˜ค์ผ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ํšŒ์ „ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด ๊ฐ ์ถ•์— ๋Œ€ํ•ด 3๊ฐœ์˜ ํšŒ์ „ํ–‰๋ ฌ์ด ๋œ๋‹ค.
Cull ์ถ”๋ ค์„œ ์ฃฝ์ด๋‹ค. ์˜ ๋œป Culling ์“ธ๋Œ€์—†๋Š” ๋ Œ๋”๋ง์„ ๋ฐฐ์ œํ•จ
Culling๊ธฐ๋ฒ•์€ ํ™”๋ฉด๋‚ด์—์„œ ๋ Œ๋”๋งํ•˜์ง€์•Š์•„๋„ ๋˜๋Š” ๋ถˆํ•„์š”ํ•œ๋ถ€๋ถ„๋“ค์„ ๋ Œ๋”๋ง์—์„œ ๋ฐฐ์ œํ•˜๊ณ 
ํ™”๋ฉด๋‚ด์—์„œ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„๋งŒ ๋ Œ๋”๋งํ•˜์—ฌ ์ตœ์ ํ™”๋ฅผ ํ•˜๋Š”๋ฐฉ์‹์ด๋‹ค.
๋ฐฑํŽ˜์ด์Šค(ํ›„๋ฉด์„ ๋ณ„) ์ปฌ๋ง Backface Culling : ํด๋ฆฌ๊ณค์˜ ํ›„๋ฉด์„ ์ œ๊ฑฐํ•œ๋‹ค.
ํ”„๋กœ์Šคํ…€(์‹œ๊ฐ์ ˆ๋‘์ฒด) ์ปฌ๋ง Frustum Culling : ์นด๋ฉ”๋ผ ์˜์—ญ๋‚ด ๋“œ๋กœ์ž‰ ์ •๋ณด๋งŒ ์‚ด๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ฆผ, ๊ฐ€๋ ค์ง„ ๊ฒƒ๋„ ์‚ด๋ฆผ.
๋ ˆ์ด์–ด๋ณ„ ์ฐจ๋‹จ ๊ฑฐ๋ฆฌ ์„ค์ • Per Layer Cull Distances