Draw image
หัวข้อนี้จะกล่าวถึงการวาดรูปร่างด้วยการใช้คำสั่ง cv2.line, cv2.rectangle และ cv2.circle จะทำการวาดบนภาพพื้นหลังสีดำ ซึ่งการสร้างภาพพื้นหลังจะต้องใช้ Numpy ที่เป็นไลบรารีประมวลผลตัวเลข
Create black background
$ np.zeros(shape, dtype="uint8")
Parameters:
shape => กำหนดขนาดของอาร์เรย์
dtype => ประเภทข้อมูล
Example:
import cv2
import numpy as np
canvas = np.zeros((300, 300, 3), dtype="uint8")
บรรทัดที่ 4 => สร้างอาร์เรย์ที่เป็น 0 ขนาด 300*300 (สูง*กว้าง) และมีพื้นที่ 3 ช่องสี (RGB)
Line
$ cv2.line(image, start_point, end_point, color, thickness)
Parameters:
image => ภาพที่ต้องการวาดเส้น
start_point => จุดเริ่มต้นของเส้น โดยจะเขียนในลักษณะคู่อันดับ (x,y)
end_point => จุดสิ้นสุดของเส้น โดยจะเขียนอในลักษณะคู่อันดับ (x,y)
color => สีของเส้น โดยจะเขียนในลักษณะ tuple และเป็นลำดับสี BGR
eg: (255, 0, 0) = สีน้ำเงิน
thickness => ความหนาของเส้น
Example:
import cv2
import numpy as np
canvas = np.zeros((300, 300, 3), dtype="uint8")
red = (0, 0, 255)
cv2.line(canvas, (300, 0), (0, 300), red, 3)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

Circle
$ cv2.circle(image, center_coordinates, radius, color, thickness)
Parameters:
image => ภาพที่ต้องการวาดวงกลม
center_coordinates => จุดศูนย์กลางของวงกลม โดยจะเขียนอยู่ในลักษณะจุดคู่อันดับ (x,y)
radius => รัศมี ขนาดของวงกลม
color => สีของเส้น โดยจะเขียนในลักษณะ tuple และเป็นลำดับสี BGR.
eg: (255, 0, 0) = สีน้ำเงิน
thickness => ความหนาของเส้นรอบวงกลม ถ้ากำหนดเป็น -1 จะกลายเป็นวงกลมทึบ
Example:
import cv2
import numpy as np
canvas = np.zeros((300, 300, 3), dtype="uint8")
(centerX, centerY) = (canvas.shape[1] // 2, canvas.shape[0] // 2)
white = (255, 255, 255)
for r in range(0, 175, 25):
cv2.circle(canvas, (centerX, centerY), r, white)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

Rectangle
$ cv2.rectangle(image, start_point, end_point, color, thickness)
Parameters:
image => ภาพที่ต้องการวาดสี่เหลี่ยม
start_point => จุดเริ่มต้น (มุมซ้ายบน) ของสี่เหลี่ยม โดยจะเขียนอยู่ในลักษณะจุดคู่อันดับ (x,y)
end_point => จุดสิ้นสุด (มุมล่างขวา) ของสี่เหลี่ยม โดยจะเขียนอยู่ในลักษณะจุดคู่อันดับ (x,y)
color => สีของเส้น โดยจะเขียนในลักษณะ tuple และเป็นลำดับสี BGR
eg: (255, 0, 0) = สีน้ำเงิน
thickness => ความหนาของเส้นรอบสี่เหลี่ยม ถ้ากำหนดเป็น -1 จะกลายเป็นสี่เหลี่ยมทึบทึบ
Example:
import cv2
import numpy as np
canvas = np.zeros((300, 300, 3), dtype="uint8")
blue = (255, 0, 0)
cv2.rectangle(canvas, (0,100), (225, 300), blue, -1)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

Text
$ cv2.putText(image, text, org, font, fontScale, color, thickness)
Parameters:
image => ภาพที่ต้องการเขียนตัวอักษร
text => ข้อความที่ต้องการเขียน
org => จุดเริ่มต้นเขียนตัวอักษร โดยเขียนอยู่ในลักษณะจุดคู่อันดับ (x,y)
font => ประเภทของตัวอักษร
fontScale => ขนาดของตัวอักษร
color => สีของเส้น โดยจะเขียนในลักษณะ tuple และเป็นลำดับสี BGR.
eg: (255, 0, 0) = สีน้ำเงิน
thickness => ความหนาของเส้นตัวอักษร
Example:
import cv2
import numpy as np
canvas = np.zeros((300, 300, 3), dtype="uint8")
cv2.putText(canvas, "Hello world!!", (50,50), cv2.FONT_HERSHEY_COMPLEX, 1, (0,255,0),1 )
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

Last updated
Was this helpful?