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

๋ฐ˜์‘ํ˜•

์ €์—๊ฒŒ ๋งก๊ฒจ์ง„ 3๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ๋ง๊ณ ์‚ฌ๊ฐ€ ๋“œ๋””์–ด ๋์ด๋‚ฌ๋„ค์š”.


์ด๋Ÿฐ์ €๋Ÿฐ ์ผ๋“ค์ด ๋งŽ์•˜์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๋ณด๋‹ˆ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์— ๋Œ€ํ•ด ์†Œํ™€ํ•ด์ง€๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด์„œ OpenCV๋ฅผ ์ด์šฉํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


๋ชจ๋“  ์ฝ”๋”ฉ์— ์žˆ์–ด์„œ MouseEvent๋Š” ๋งŽ์ด ๋ณด์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํŠผ ์•ก์…˜, ์ด๋ฒคํŠธ ์ด๋Ÿฐ ๊ฒƒ ๋งŽ์ด ๋ณด์…จ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์˜์ƒ ์ฒ˜๋ฆฌ์—์„œ ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋Š” ์–ด๋–ค ์šฉ๋„๋กœ ์“ฐ์ผ๊นŒ์š”? 

์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์–ด๋–ค ์˜์ƒ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋งŒ๋“ค์–ด์ง„ ์˜์ƒ์„ IplImage๋‚˜ Mat ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ์˜์ƒ์—์„œ ํ”ฝ์…€์ด ๋ช‡์ธ์ง€ ๊ถ๊ธˆํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


cout์œผ๋กœ Pixel ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ”ฝ์…€ ์ˆ˜ ๋”ฐ๋ผ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์–‘์„ ์ถœ๋ ฅํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ž์‹ ์ด ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฐ์–ด์„œ ์ฝ”๋”ฉํ•˜๊ธฐ์—๋Š” ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.




์˜์‹ฑ ๋„์šฐ๊ธฐ

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ์ตํ˜”๋˜ ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๋ถ„์ด ์›ํ•˜๋Š” ์˜์ƒ์„ ๋„์›Œ๋ด…์‹œ๋‹ค. 


์ €๋Š” 3๊ฐœ์˜ ๋‹น๊ตฌ๊ณต์ด ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋„์›Œ๋ดค์Šต๋‹ˆ๋‹ค.


๋ณธ๋ž˜ ์ด๋ฏธ์ง€๋งŒ ๋„์› ์„ ๋•Œ๋Š” ๋งˆ์šฐ์Šค๋‚˜ ํ‚ค๋ณด๋“œ ์–ด๋–ค ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด๋„ ๋ฐ˜์‘์ด ์—†์Šต๋‹ˆ๋‹ค. ์ž ๊ทธ๋Ÿผ ์ด๋ฏธ์ง€์— ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋ฅผ ์ค˜๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



MouseEvent 



๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋„์› ์ง€๋งŒ, ๋‘˜ ๋‹ค ๋ชจ๋‘ ๋˜‘๊ฐ™์€ ์ด๋ฏธ์ง€์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ดํ‹€๋Œ€๋กœ, ํ•œ ์ด๋ฏธ์ง€๋Š” ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๊ฐ€ ์—†๊ณ , ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์—๋Š” ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, ์‹œํ—˜์‚ฌ๋งˆ cout์„ ์‚ฌ์šฉํ•ด์„œ ๋‚ด๊ฐ€ ํด๋ฆญํ•œ ๋งˆ์šฐ์Šค ์ง€์ ์„ Point ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด x, y ๊ฐ’์œผ๋กœ ๋ณด์—ฌ์ฃผ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.


Non Mouse Event ์ฐฝ์— ๋งˆ์šฐ์Šค๋ฅผ 100๋ฒˆ์„ ๋šœ๋“ค๊ฒจ๋„ ์•„๋ฌด๋Ÿฐ ๋ฐ˜์‘์ด ์—†์ง€๋งŒ, Mouse Event ์ด๋ฏธ์ง€์—์„œ ๋งˆ์šฐ์Šค ํด๋ฆญ์„ ํ•˜๋ฉด, ๋‚ด๊ฐ€ ์ฐ์€ ์ง€์ ์˜ ์ขŒํ‘œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค. ์ด ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ , ์ด ์œ„์— ์–ด๋–ค ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ทธ๋ฆด ์ˆ˜๋„ ์žˆ๊ณ , ์ด ์ขŒํ‘œ ๊ฐ’์˜ ๋‚ด์šฉ์„ ๋ฐ”๊ฟ€์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.



๊ทธ๋ฆผํŒ์˜ ํ•˜์–€ ์ง€์šฐ๊ฐœ

๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Windows์—์„œ ์–ด๋ ธ์„ ๋•Œ ์ž์ฃผ ๊ฐ€์ง€๊ณ  ๋†€๋˜ ๊ทธ๋ฆผํŒ์ด ์žˆ์ฃ , ๊ทธ ๊ทธ๋ฆผํŒ์—๋Š” ์ง€์šฐ๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ทธ ์ง€์šฐ๊ฐœ๋ฅผ ํ•œ ๋ฒˆ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ๋Š” ๋‹จ์ˆœํžˆ ๋งˆ์šฐ์Šค ํด๋ฆญ๋งŒ์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, OpenCV์—์„œ๋Š” EVENT_MOUSEMOVE๋ผ๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•ด์ฃผ์–ด์„œ ์ด๋ฅผ ์ด์ง„ ์—ฐ์‚ฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋งˆ์šฐ์Šค ํด๋ฆญ๊ณผ ๋™์‹œ์— ์ด๋™ํ•˜๋ฉด, circle ์ฝ”๋“œ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.


๋ณธ๋ž˜ ๊ทธ๋ฆผํŒ์˜ ์ง€์šฐ๊ฐœ๋Š” ์‚ฌ๊ฐํ˜•์ด์ง€๋งŒ, ๋ญ ๋˜‘๊ฐ™์ด ํ•˜๋ผ๋Š” ๋ฒ•์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ใ…Žใ…Ž ์ €๋Š” circle์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€์šฐ๊ฐœ๋Š” ๋ณดํ†ต ํ•˜์–€์ƒ‰๊น”๋กœ ์น ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— Scalar ๊ฐ’์„ ์ „๋ถ€ 255๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.



๋งˆ์น˜๋ฉฐ....

OpenCV๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์ด์ „๊นŒ์ง€๋งŒ ํ•ด๋„, ํ…์ŠคํŠธ๋ฅผ ์ฃผ๋ฌด๋ฅด๊ณ  ๋†€๊ฑฐ๋‚˜ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ฃผ๋ฌด๋ฅด๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•œ ๊ฐœ์˜€์ง€๋งŒ OpenCV๋ฅผ ๊ฐ€์ง€๊ณ  ์˜์ƒ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ์— ์žฌ๋ฏธ๊ฐ€ ์กฐ๊ธˆ ๋งŽ์ด ์ƒ๊ฒจ๋ฒ„๋ฆ‡ํ•ด ๋ธ”๋กœ๊ทธ์— ๊ธ€์„ ์˜ฌ๋ฆฌ๊ณค ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


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


๋‹ค์Œ OpenCV ํฌ์ŠคํŠธ๋Š” ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments