[OpenCV] ์ํ๋ ์ด๋ฏธ์ง ์์ญ(๊ด์ฌ์์ญ, ROI) ์๋ฅด๊ธฐ(Crop)
๋ธ๋ก๊ทธ ๊ธ์ ์ฐ๋ค๋ณด๋ฉด ํน์ ์์ญ๋ง์ ์๋ผ์ ์ ์ฅํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์๋์์ ์ ๊ณตํ๋ Windows ์ฌ์ง ๋ทฐ์ด ๋ฑ์ ํ๋ก๊ทธ๋จ์ ์ด์ฉํด ์ํ๋ ์ด๋ฏธ์ง์ ์์ญ์ ์๋ฅผ ์ ์๋๋ฐ, Mac OS X๋ Ubuntu์ ์๋ค๋ณด๋ฉด ๊ธฐ๋ณธ ํ๋ก๊ทธ๋จ์ผ๋ก ์ด๋ฐ ๊ฒ๋ค์ ์ ๊ณตํ์ง ์๋ค๋ณด๋ ์ธ ํ๋ก๊ทธ๋จ์ ์ฐพ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์ฆ์๋๋ฐ์.
์ด๋ ๊ฒ ์ํ๋ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์์ ๊ฐ๋จํ๊ฒ ์ํ๋ ์์ญ์ ์๋ฅผ ์ ์๋ ํ๋ก๊ทธ๋จ์ ํ ๋ฒ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
MouseEvent
OpenCV์์ MouseEvent๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ฝ๋ฐฑ ํจ์์ ๋ํด ์ ๋ชจ๋ฅด์๊ฒ ๋ค๋ฉด ์๋์ ๊ธ์ ์ฐธ๊ณ ํด๋ณด์ธ์.
2016.12.18 - [Programming/OpenCV] - OpenCV์์ Mouse Event๋ฅผ ์ฌ์ฉํด๋ณด์
์ด๋ฅผ ํ ๋๋ก ์ฐ๋ฆฌ๋ ์ํ๋ ์์ญ์ ์๋ฅด๋ ์ฝ๋๋ฅผ ๊ตฌํํด ๋ณผ ์ ์์ต๋๋ค.
ROI (Region Of Interest)
์ด๋ฏธ์ง์์ ์ํ๋ ์์ญ์ Computer Vision์์๋ ๊ด์ฌ ์์ญ์ด๋ผ๊ณ ์๊ธฐํฉ๋๋ค. ์ด๋ฅผ ROI๋ผ๊ณ ํํํ๋๋ฐ์. ์ปดํจํฐ ๋น์ ์์ ๊ด์ฌ ์์ญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ Rect, Point๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง์ ์๋ณธ๊ณผ ๊ด์ฐฐํ๋ ค๋ ๋์์ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์์ ์ฒ๋ฆฌ๋ฅผ ์งํํฉ๋๋ค.
๋ณธ๋ ์ด๋ฏธ์ง๊ฐ srcImage์ ๋๋ค. ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์์ roi๋ผ๋ ๋ณ์์ ํน์ ์์น์ ํน์ ํฌ๊ธฐ๋งํผ ์ํ๋ ์์ญ์ ๊ฐ์ ธ์ ์ด๋ฏธ์ง ์ฒ๋ฆฌํ๋ ๊ธฐ๋ณธ ์ฝ๋์ ๋๋ค.
์ค์ ๋ก ๊ฐ์ ธ์๋ณด๋ฉด ์ด๋ฐ ํํ๊ฐ ๋๋ ๊ฒ์ด์ฃ . ์๋ณธ ์ด๋ฏธ์ง๊ฐ ์ผ์ชฝ, ์ ๊ฐ ์ํ๋ ๋ถ๋ถ์ ์ด๋ฏธ์ง์ ์ ์ชฝ์ด๋ผ๊ณ ํ๋ค๋ฉด ์ ์ชฝ์ ํด๋นํ๋ ๊ฒ์ ์ด๋ ๊ฒ ์๋ผ์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก๋ ์ํ๋ ์ด๋ฏธ์ง ์๋ฅด๊ธฐ, ์ปดํจํฐ ๋น์ ์์๋ ROI, ๊ด์ฌ ์์ญ ๊ฐ์ ธ์ค๊ธฐ ๋ผ๊ณ ์ด์ผ๊ธฐ ํฉ๋๋ค.
ํ์ง๋ง ๊ธฐ๋ณธ ์ฝ๋๋ก๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์ญ์ด ์ด๋์ธ์ง๋ฅผ ์ ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ง์ฐ์ค ์ด๋ฒคํธ๋ฅผ ์ด์ฉํด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ด์ฌ ์์ญ์ ์ง์ ๋๋๊ทธํด์ ์ง๋ฅด๋๋ก ํ๋ ๊ฒ์ด ์ด๋ฒ ๊ธ์ ๋ชฉํ์ ๋๋ค.
Develop
์ ์ด์ ์๊ตฌ ์ฌํญ๊ณผ ๊ตฌํ ์๋ฆฌ๋ฅผ ์์์ผ๋ ์ด์ ๊ตฌํ์ ๋ค์ด๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ์ง ์์ ๋ง์ฐ์ค๋ฅผ ๋์์ ๋ ์ด๋ค ์์ญ์ ๋๋๊น ํ๊ณ ์๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ณ๋์ img_draw ๋งคํธ๋ฆญ์ค๊ฐ ํ์ํฉ๋๋ค. ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๊ฑด๋๋ฆฌ๋ฉด ๋์ค์ ๋ณต๊ตฌ๊ฐ ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋๊น ํ๋ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ matrix๋ฅผ ๋ณ๋์ ๋ณ์๋ก ์ฌ์ฉํฉ๋๋ค.
- EVENT_LBUTTONDOWN: ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋๋ฅด๊ณ ์์ ๋.
- EVENT_MOUSEMOVE: ๋ง์ฐ์ค๋ฅผ ์์ง์ด๊ณ ์์ ๋.
- EVENT_LBUTTONUP: ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋์ ๋.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋ง์ฐ์ค ์ด๋ฒคํธ๋ 3๊ฐ์ง ์ ๋๋ค. ์ํ๋ ์์ญ์ ๋๋๊น ํ๊ณ ์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํ LBUTTONDOWN๊ณผ MOUSEMOVE๋ก drag ์ค์ธ์ง๋ฅผ ๋ณ์๋ก ํ์ธํ๊ณ , drag ์ค์ด๋ฉด ์ด ๋๋ถํฐ rectangle์ ๋ง์ฐ์ค ์์น์์๋ถํฐ ๊ทธ๋ ค๋๊ฐ๋๋ก ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ง์ฐ์ค ๋ฒํผ์ ๋์ ๋๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์ญ ์ ํ์ ๋ง์ณค์ผ๋ฏ๋ก ๋ง์ฐ์ค๋ฅผ ๋๋๊ทธํ๊ธฐ ์์ํ๋ ๋ถ๋ถ๋ถํฐ ๋ง์ง๋ง ๋ถ๋ถ๊น์ง์ x, y ์ขํ์ width, height๋ฅผ ๊ณ์ฐํด ๋ณ์๋ก ๋ฃ์ต๋๋ค.
์ฌ๊ธฐ์ callback ํจ์์ x, y๊ฐ ์๋ณธ ์ด๋ฏธ์ง์ x, y์ด๊ณ , gx, gy๊ฐ ๋๋๊ทธ ํ๋ ์ด๊ธฐ ์์ ๋ถํฐ์ x, y ์ขํ์ ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ์๋ฅธ ์์ญ์ด roi ๋ณ์์ ์ ์ฅ๋์์ผ๋ฉด ์ํ๋ ํ์ผ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋ ์ ์๋๋ก imwrite ํจ์์ ์ด๋ฏธ์ง ํ์ผ ์ด๋ฆ์ ๋ฃ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์ ๊ฐ ์ํ๋ ๋ก๋ด์ ์ ๋ถ๋ถ๋ง ๋๋๊ทธ๋ฅผ ํ์ ๋ ์ ๋ ๊ฒ ์ค๋ฅธ์ชฝ์์ ์ ๋ถ๋ถ๋ง ์๋ผ์ง ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ...
์ด๋ฏธ์ง๋ฅผ Cropํ๋ ๊ฒ์ด ๊ฐ๋จํ ์ผ์์๋ ๋ถ๊ตฌํ๊ณ ํญ์ ์ธ๋งํ ํ๋ก๊ทธ๋จ์ ์ฐพ๋ค๋ณด๋ฉด ์๊ฐ์ด ์ง๋๊ฐ๊ธฐ ๋ง๋ จ์ด๋ผ ๊ฐ๋จํ๊ฒ ๊ตฌํํด๋ณผ ์๋ ์์๊น ํ๋ค ๋ค์ OpenCV๋ก ์ค๊ฒ ๋์์ต๋๋ค.
C++๊ฐ ์ด๋ ต๋ค๋ฉด Python์ผ๋ก๋ ๊ตฌํํด๋ณผ ์ ์์ผ๋ Python์ผ๋ก ๊ตฌํํด๋ณด๊ณ ์ถ๋ค๋ฉด C++ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ๊ตฌํํด๋ณด์๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
'Programming > OpenCV' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[OpenCV] C++์ OpenCV 4.x๋ก ๊ฐ๋ฐํ ์ ์๋ ํ๊ฒฝ ๋ง๋ค๊ธฐ (0) | 2022.07.02 |
---|---|
[GP] OpenCV Trackbar ์ฃผ๋ฌด๋ฅด๊ธฐ (0) | 2017.03.01 |
OpenCV์์ KeyEvent๋ฅผ ์ฌ์ฉํด๋ณด์. (0) | 2017.01.21 |
OpenCV์์ Mouse Event๋ฅผ ์ฌ์ฉํด๋ณด์ (0) | 2016.12.18 |
OpenCV์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ๊ณผ Mat ํด๋์ค (0) | 2016.11.20 |