๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
OpenCV ๊ทธ๋ฆฌ๊ธฐ ํจ์ ์, ์ฌ๊ฐํ, ์ง์ , ๋ค๊ฐํ, ๋ฌธ์์ด ๋ณธ๋ฌธ
๐ฉ๐ป IoT (Embedded)/Image Processing
OpenCV ๊ทธ๋ฆฌ๊ธฐ ํจ์ ์, ์ฌ๊ฐํ, ์ง์ , ๋ค๊ฐํ, ๋ฌธ์์ด
์ง์ง์ํ์นด 2022. 11. 7. 16:47728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ redorangeyellowy๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค>
[ch02] Python ๊ธฐ์ด ์ฌ์ฉ๋ฒ - OpenCV ๊ทธ๋ฆฌ๊ธฐ ํจ์
OpenCV๋ ์์์ ์ , ๋ํ, ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ๊ทธ๋ฆฌ๊ธฐ ํจ์๋ฅผ ์ ๊ณต์ ๊ทธ๋ฆฌ๊ธฐ : ์ง์ , ํ์ดํ, ๋ง์ปค ๋ฑ๋ํ ๊ทธ๋ฆฌ๊ธฐ : ์ฌ๊ฐํ, ์, ํ์, ๋ค๊ฐํ ๋ฑ๋ฌธ์์ด ์ถ๋ ฅ๊ทธ๋ฆฌ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ์์์ ํฝ
velog.io
๐ OpenCV ๊ทธ๋ฆฌ๊ธฐ ํจ์
- ์ , ๋ํ, ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ๊ทธ๋ฆฌ๊ธฐ ํจ์๋ฅผ ์ ๊ณต
- ์ ๊ทธ๋ฆฌ๊ธฐ : ์ง์ , ํ์ดํ, ๋ง์ปค ๋ฑ
- ๋ํ ๊ทธ๋ฆฌ๊ธฐ : ์ฌ๊ฐํ, ์, ํ์, ๋ค๊ฐํ ๋ฑ
- ๋ฌธ์์ด ์ถ๋ ฅ
๐ ๊ทธ๋ฆฌ๊ธฐ ํจ์ ์ฃผ์ํ ์
- ๊ทธ๋ฆฌ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ์์์ ํฝ์
๊ฐ ์์ฒด๋ฅผ ๋ณ๊ฒฝ
- ์๋ณธ ์์์ด ํ์ํ๋ฉด ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด์ ๊ทธ๋ฆฌ๊ธฐ & ์ถ๋ ฅ
- ๊ทธ๋ ์ด์ค์ผ์ผ ์์์๋ ์ปฌ๋ฌ๋ก ๊ทธ๋ฆฌ๊ธฐ ์๋จ
- cv2.cvtColor() ํจ์๋ก BGR ์ปฌ๋ฌ ์์์ผ๋ก ๋ณํํ ํ ๊ทธ๋ฆฌ๊ธฐ ํจ์ ํธ์ถ
๐ฉ ์ง์
import cv2
import numpy as np
img = np.full((400, 400, 3), 255, np.uint8)
- ์ง์ ๊ทธ๋ฆฌ๊ธฐ
- img : ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์์
- pt1, pt2 : ์ง์ ์ ์์์ ๊ณผ ๋์ . (x, y) ํํ.
- color : ์ ์์ ๋๋ ๋ฐ๊ธฐ. (B, G, R) ํํ ๋๋ ์ ์๊ฐ.
- thickness : ์ ๋๊ป. ๊ธฐ๋ณธ๊ฐ์ 1.
- lineType : ์ ํ์ . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA ์ค ์ ํ. ๊ธฐ๋ณธ๊ฐ์ cv2.LINE_8
- shift : ๊ทธ๋ฆฌ๊ธฐ ์ขํ ๊ฐ์ ์ถ์ ๋น์จ. ๊ธฐ๋ณธ๊ฐ์ 0.
cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
cv2.line(img, (50, 50), (200, 50), (0, 0, 255), 5)
cv2.imshow('lines', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
๐ฉ ์ฌ๊ฐํ
- ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
- img : ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์์
- pt1, pt2 : ์ฌ๊ฐํ์ ๋ ๊ผญ์ง์ ์ขํ. (x, y) ํํ
- rec : ์ฌ๊ฐํ ์์น ์ ๋ณด. (x, y, w, h) ํํ
- color : ์ ์์ ๋๋ ๋ฐ๊ธฐ. (B, G, R) ํํ ๋๋ ์ ์๊ฐ.
- thickness : ์ ๋๊ป. ๊ธฐ๋ณธ๊ฐ์ 1. ์์(-1)๋ฅผ ์ง์ ํ๋ฉด ๋ด๋ถ๋ฅผ ์ฑ์.
- lineType : ์ ํ์ . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA ์ค ์ ํ. ๊ธฐ๋ณธ๊ฐ์ cv2.LINE_8
- shift : ๊ทธ๋ฆฌ๊ธฐ ์ขํ ๊ฐ์ ์ถ์ ๋น์จ. ๊ธฐ๋ณธ๊ฐ์ 0
cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
cv2.rectangle(img, (70, 220), (180, 280), (0, 128, 0), -1)
cv2.rectangle(img, rec, color, thickness=None, lineType=None, shift=None)
cv2.rectangle(img, (50, 200, 150, 100), (0, 255, 0), 2)
๐ฉ ์
- ์ ๊ทธ๋ฆฌ๊ธฐ
- img : ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์์
- center : ์์ ์ค์ฌ ์ขํ. (x, y) ํํ.
- radius : ์์ ๋ฐ์ง๋ฆ
- color : ์ ์์ ๋๋ ๋ฐ๊ธฐ. (B, G, R) ํํ ๋๋ ์ ์๊ฐ.
- thickness : ์ ๋๊ป. ๊ธฐ๋ณธ๊ฐ์ 1. ์์(-1)๋ฅผ ์ง์ ํ๋ฉด ๋ด๋ถ๋ฅผ ์ฑ์.
- lineType : ์ ํ์ . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA ์ค ์ ํ. ๊ธฐ๋ณธ๊ฐ์ cv2.LINE_8
- shift : ๊ทธ๋ฆฌ๊ธฐ ์ขํ ๊ฐ์ ์ถ์ ๋น์จ. ๊ธฐ๋ณธ๊ฐ์ 0.
cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None)
cv2.circle(img, (300, 100), 60, (255, 0, 0), 3, cv2.LINE_AA)
๐ฉ ๋ค๊ฐํ
- ๋ค๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
- img : ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์์
- pts : ๋ค๊ฐํ ์ธ๊ณฝ ์ ๋ค์ ์ขํ ๋ฐฐ์ด. numpy.ndarray์ ๋ฆฌ์คํธ.
- ex. [np.array([[10, 10], [50, 50], [10, 50]], dtype=np.int32)]
- isClosed : ํ๊ณก์ ์ฌ๋ถ. True ๋๋ False ์ง์ .
- color : ์ ์์ ๋๋ ๋ฐ๊ธฐ. (B, G, R) ํํ ๋๋ ์ ์๊ฐ.
- thickness : ์ ๋๊ป. ๊ธฐ๋ณธ๊ฐ์ 1. ์์(-1)๋ฅผ ์ง์ ํ๋ฉด ๋ด๋ถ๋ฅผ ์ฑ์.
- lineType : ์ ํ์ . cv2.LINE_4, cv2.LINE_8, cv.LINE_AA ์ค ์ ํ. ๊ธฐ๋ณธ๊ฐ์ cv2.LINE_8
- shift : ๊ทธ๋ฆฌ๊ธฐ ์ขํ ๊ฐ์ ์ถ์ ๋น์จ. ๊ธฐ๋ณธ๊ฐ์ 0
cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)
pts = np.array([[250, 200], [300, 200], [350, 300], [250, 300]])
cv2.polylines(img, [pts], True, (255, 0, 255), 2)
๐ฉ ๋ฌธ์์ด
- ๋ฌธ์์ด ์ถ๋ ฅ
- img : ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์์
- text : ์ถ๋ ฅํ ๋ฌธ์์ด
- org : ์์์์ ๋ฌธ์์ด์ ์ถ๋ ฅํ ์์น์ ์ข์ธก ํ๋จ ์ขํ. (x, y) ํํ
- fontFace : ํฐํธ ์ข ๋ฅ. cv2.FONTHERSHEY๋ก ์์ํ๋ ์์ ์ค ์ ํ
- fontScale : ํฐํธ ํฌ๊ธฐ ํ๋/์ถ์ ๋น์จ
- thickness : ์ ๋๊ป. ๊ธฐ๋ณธ๊ฐ์ 1. ์์(-1)๋ฅผ ์ง์ ํ๋ฉด ๋ด๋ถ๋ฅผ ์ฑ์.
- lineType : ์ ํ์ . cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA ์ค ์ ํ.
- bottomLeftOrigin : True์ด๋ฉด ์์์ ์ข์ธก ํ๋จ์ ์์ ์ผ๋ก ๊ฐ์ฃผ. ๊ธฐ๋ณธ๊ฐ์ False.
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
text = 'Hello? OpenCV ' + cv2.__version__
cv2.putText(img, text, (50, 350), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 1, cv2.LINE_AA)
728x90
๋ฐ์ํ
'๐ฉโ๐ป IoT (Embedded) > Image Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments