250x250
Link
๋‚˜์˜ GitHub Contribution ๊ทธ๋ž˜ํ”„
Loading data ...
Notice
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Data Science LAB

[Python] OpenCV ๊ธฐ์ดˆ2 - ์ด๋ฏธ์ง€ ์œ„์— ๊ทธ๋ฆผ๊ทธ๋ฆฌ๊ธฐ ๋ณธ๋ฌธ

๐Ÿ–ฅ๏ธ Computer Vision/Opencv

[Python] OpenCV ๊ธฐ์ดˆ2 - ์ด๋ฏธ์ง€ ์œ„์— ๊ทธ๋ฆผ๊ทธ๋ฆฌ๊ธฐ

ใ…… ใ…œ ใ…” ใ…‡ 2022. 8. 2. 00:48
728x90

1. ๋นˆ ์Šค์ผ€์น˜๋ถ ๊ทธ๋ฆฌ๊ธฐ

import cv2
import numpy as np

# ์„ธ๋กœ 46 * ๊ฐ€๋กœ 640, 3 Channel(RGB)์— ํ•ด๋‹นํ•˜๋Š” ์Šค์ผ€์น˜๋ถ
img = np.zeros((460,640,3), dtype = np.uint8)
# img[:] = (255,255,255) # ์ „์ฒด ๊ณต๊ฐ„ ํฐ์ƒ‰์œผ๋กœ ์ฑ„์šฐ๊ธฐ
# print(img)

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

numpy๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋นˆ ์Šค์ผ€์น˜๋ถ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , 

์ง€์ • ์˜์—ญ์˜ ์ƒ‰์ƒ์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

2. ์ผ๋ถ€ ์˜์—ญ ์ƒ‰์น 

import cv2
import numpy as np

# ์„ธ๋กœ 46 * ๊ฐ€๋กœ 640, 3 Channel(RGB)์— ํ•ด๋‹นํ•˜๋Š” ์Šค์ผ€์น˜๋ถ
img = np.zeros((460,640,3), dtype = np.uint8)
img[100:200,200:300] = (255,255,255)
#์„ธ๋กœ ์˜์—ญ, ๊ฐ€๋กœ์˜์—ญ

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

ํŠน์ • ์˜์—ญ์„ ์ง€์ •ํ•˜์—ฌ ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ

 

3. ์ง์„  ๊ทธ๋ฆฌ๊ธฐ

cv2.line([์ด๋ฏธ์ง€], [์‹œ์ž‘์ ], [๋์ ], [์ƒ‰์ƒ], [์ง์„ ์ข…๋ฅ˜])

OpenCV์—์„œ ์ง€์›ํ•˜๋Š” ์ง์„  ์ข…๋ฅ˜

1. cv2.LINE_4 : ์ƒํ•˜์ขŒ์šฐ 4๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์„ 
2. cv2.LINE_8 : ๋Œ€๊ฐ์„  ํฌํ•จํ•œ 8๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์„ (๊ธฐ๋ณธ๊ฐ’)
3. cv2.LINE_AA :  ๋ถ€๋“œ๋Ÿฌ์šด ์„ (anti-aliasing)
import cv2
import numpy as np

# ์„ธ๋กœ 46 * ๊ฐ€๋กœ 640, 3 Channel(RGB)์— ํ•ด๋‹นํ•˜๋Š” ์Šค์ผ€์น˜๋ถ
img = np.zeros((460,640,3), dtype = np.uint8)

COLOR = (0,255,255) #BGR : yellow
THICKNESS = 3 #๋‘๊ป˜

cv2.line(img,(50,100),(400,50),COLOR,THICKNESS,cv2.LINE_8)
cv2.line(img,(50,200),(400,150),COLOR,THICKNESS,cv2.LINE_4)
cv2.line(img,(50,300),(400,250),COLOR,THICKNESS,cv2.LINE_AA)
# ๊ทธ๋ฆผ ์œ„์น˜, ์‹œ์ž‘์ , ๋ ์ , ์ƒ‰๊น” ๋‘๊ป˜, ์„  ์ข…๋ฅ˜


cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

LINE_4์™€ LINE_8์ด ๋ˆˆ์— ๋„๊ฒŒ ์ฐจ์ด๋‚˜์ง€๋Š” ์•Š์ง€๋งŒ,

LINE_4๋Š” ์ƒํ•˜ ์ขŒ์šฐ 4๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , 

LINE_8์€ ๋Œ€๊ฐ์„ ์„ ํฌํ•จํ•œ 8๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์ ธ ์žˆ๋‹ค. (default๊ฐ’)

 

4. ์› ๊ทธ๋ฆฌ๊ธฐ

cv2.circle([์ด๋ฏธ์ง€], [์ค‘์‹ฌ์ ], [๋ฐ˜์ง€๋ฆ„], [์ƒ‰์ƒ], [๋‘๊ป˜], [์„  ์ข…๋ฅ˜])
import cv2
import numpy as np

# ์„ธ๋กœ 46 * ๊ฐ€๋กœ 640, 3 Channel(RGB)์— ํ•ด๋‹นํ•˜๋Š” ์Šค์ผ€์น˜๋ถ
img = np.zeros((460,640,3), dtype = np.uint8)

COLOR = (255,255,0) #BGR : ์˜ฅ์ƒ‰
RADIUS = 50 # ๋ฐ˜์ง€๋ฆ„
THICKNESS = 10 #๋‘๊ป˜

cv2.circle(img,(200,100),RADIUS,COLOR,THICKNESS,cv2.LINE_AA) # ์†์ด ๋นˆ ์›
# ๊ทธ๋ฆด ์œ„์น˜, ์›์˜ ์ค‘์‹ฌ, ๋ฐ˜์ง€๋ฆ„, ์ƒ‰๊น”, ๋‘๊ป˜, ์„  ์ข…๋ฅ˜

cv2.circle(img,(400,100),RADIUS,COLOR,cv2.FILLED,cv2.LINE_AA) # ์†์ด ๊ฝ‰ ์ฐฌ ์›


cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

์œ„์น˜, ์ค‘์‹ฌ, ๋ฐ˜์ง€๋ฆ„, ์ฑ„์›€ ์—ฌ๋ถ€ ์„ค์ •

 

5. ์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ

cv2.rectangle([์ด๋ฏธ์ง€], [์™ผ์ชฝ ์œ„], [์˜ค๋ฅธ์ชฝ ์•„๋ž˜], [์ƒ‰์ƒ], [๋‘๊ป˜])
import cv2
import numpy as np

# ์„ธ๋กœ 46 * ๊ฐ€๋กœ 640, 3 Channel(RGB)์— ํ•ด๋‹นํ•˜๋Š” ์Šค์ผ€์น˜๋ถ
img = np.zeros((460,640,3), dtype = np.uint8)

COLOR = (0,255,0) #BGR : ์ดˆ๋ก์ƒ‰
THICKNESS = 3 #๋‘๊ป˜

cv2.rectangle(img,(100,100),(200,200),COLOR,THICKNESS) # ์†์ด ๋นˆ ์‚ฌ๊ฐํ˜•
# ๊ทธ๋ฆด ์œ„์น˜, ์™ผ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜, ์ƒ‰๊น”, ๋‘๊ป˜
cv2.rectangle(img,(300,100),(400,300),COLOR,cv2.FILLED) # ์†์ด ๋นˆ ์‚ฌ๊ฐํ˜•



cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

6. ๋‹ค๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ

cv2.polylines([์ด๋ฏธ์ง€], [๊ทธ๋ฆด ์ขŒํ‘œ๋“ค], [๋‹ซํž˜ ์—ฌ๋ถ€], [๋‘๊ป˜], [์„  ์ข…๋ฅ˜])
import cv2
import numpy as np

# ์„ธ๋กœ 46 * ๊ฐ€๋กœ 640, 3 Channel(RGB)์— ํ•ด๋‹นํ•˜๋Š” ์Šค์ผ€์น˜๋ถ
img = np.zeros((460,640,3), dtype = np.uint8)

COLOR = (0,0,255) #BGR : ๋นจ๊ฐ„์ƒ‰
THICKNESS = 3 #๋‘๊ป˜

pts1 = np.array([[100,100] , [200,100], [100,200]])
pts2 = np.array([[200,100], [300,100], [300,200]])

#cv2.polylines(img, [pts1], True, COLOR,THICKNESS, cv2.LINE_AA)
#cv2.polylines(img, [pts2], True, COLOR,THICKNESS, cv2.LINE_AA)
cv2.polylines(img, [pts1,pts2], True, COLOR,THICKNESS, cv2.LINE_AA) # ์†์ด ๋นˆ ๋‹ค๊ฐํ˜•
# ๊ทธ๋ฆด ์œ„์น˜, ๊ทธ๋ฆด ์ขŒํ‘œ๋“ค, ๋‹ซํž˜ ์—ฌ๋ถ€, ์ƒ‰๊น”, ๋‘๊ป˜, ์„  ์ข…๋ฅ˜

pts3 = np.array([[[100,300], [200,300], [100,400]], [[200,300], [300,300], [300,400]]])
cv2.fillPoly(img, pts3, COLOR, cv2.LINE_AA) # ๊ฝ‰ ์ฐฌ ๋‹ค๊ฐํ˜•
# ๊ทธ๋ฆด ์œ„์น˜, ๊ทธ๋ฆด ๋‹ค๊ฐํ˜•, ์ƒ‰๊น”, ์„  ์ข…๋ฅ˜


cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

728x90
Comments