Drawing Functions in OpenCV
วัตถุประสงค์
- เรียนรู้การวาดรูปทรงเรคาคณิตที่แตกต่าง ด้วย OpenCV
- เรียนรู้การใช้ฟังก์ชัน cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putText()
- img ภาพที่คุณต้องการที่จะวาดรูปทรง
- สี สีของรูปร่าง สำหรับ BGR ผ่านเป็น tuple เช่น: (255,0,0) สีน้ำเงิน
- ความหนา ความหนาของเส้นหรือวงกลม ฯลฯ หาก ** - 1 ** สำหรับตัวเลขเช่นวงกลมมันจะเติมรูปร่าง ความหนาเริ่มต้น = 1
- linetype ประเภทของเส่น
Drawing Line
ในการวาดเส่น คุณต้องมีจุดเริ่มต้นและสิ้นสุดของเส้นพิกัด เราจะสร้างภาพสีดำและวาดเส้นสีฟ้าที่ได้จากด้านบนซ้ายมุมล่างขวา
import numpy as np import cv2 img = np.zeros((512,512,3), np.uint8) cv2.line(img,(0,0),(511,511),(255,0,0),1)
Drawing Rectangle
การวาดรูปสี่เหลี่ยมผืนผ้าคุณต้องมุมบนด้านซ้ายและมุมขวาล่างของรูปสี่เหลี่ยมผืนผ้า ในครั้งนี้เราจะวาดรูปสี่เหลี่ยมผืนผ้าสีแดงที่มุมบนด้านขวาของภาพ
cv2.rectangle(img,(384,0),(510,128),(0,0,255),3)
Drawing Circle
การวาดวงกลมคุณต้องพิกัดศูนย์กลางและรัศมีของมัน เราจะวาดวงกลมภายในสี่เหลี่ยมผืนผ้าวาดดังกล่าวข้างต้น
cv2.circle(img,(447,63), 63, (0,255,0), -1)
Drawing Ellipse
การวาดรูปวงรีที่เราต้องมีที่ตั้งศูนย์กลาง (x, y) ข้อต่อไปคือความยาวแกน (ความยาวแกนหลัก, ความยาวแกนเล็ก ๆ น้อย ๆ ) มุมของการหมุนของวงรีในทิศทางทวนเข็มนาฬิกา startAngle และ endAngle หมายถึงการเริ่มต้นและสิ้นสุดของเส้นโค้งวงรีวัดในทิศทางตามเข็มนาฬิกาจากแกนหลัก นั่นคือการให้ค่า 0 และ 360 ให้เต็มรูปวงรี สำหรับรายละเอียดเพิ่มเติมตรวจสอบเอกสารของ [cv2.ellipse]สำหรับรายละเอียดเพิ่มเติม
cv2.ellipse(img,(256,256),(70,100),0,0,-180,255,-1)
Drawing Polygon
การวาดรูปหลายเหลี่ยมแรกที่คุณต้องพิกัดของจุด ทำให้จุดเหล่านั้นลงในอาร์เรย์ของรูปร่าง ROWSx1x2 ไหนแถว จำนวนของจุดและควรจะเป็นชนิด int32 ที่นี่เราวาดรูปหลายเหลี่ยมเล็ก ๆ มีสี่จุดสีเหลือง
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) pts = pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,255,255))
Adding Text to Images
ที่จะใส่ในตำราภาพที่คุณจะต้องระบุสิ่งต่อไป
- ข้อมูลที่เป็นข้อความที่คุณต้องการที่จะเขียน
- พิกัดตำแหน่งของที่คุณต้องการใส่มัน (เช่นมุมซ้ายมุมที่ข้อมูลเริ่มต้น)
- รูปแบบตัวอักษร (ตรวจสอบ cv2.putText ())
- ขนาดตัวอักษร (ระบุขนาดของตัวอักษร)
- สี ความ หนา linetype ฯลฯ สำหรับรูปลักษณ์ที่ดีกว่า linetype = cv2.LINE_AA ขอแนะนำ
เราจะเขียน OpenCV บนภาพของเราในสีขาว
font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'Morange',(10,500), font, 3,(255,255,255),2,cv2.LINE_AA)
import numpy as np import cv2 #สร้างภาพสีดำ img = np.zeros((512,512,3), np.uint8) # วาดเส้นทแยงมุมสีฟ้าที่มีความหนา 1 px cv2.line(img,(0,0),(511,511),(255,0,0),1) cv2.rectangle(img,(384,0),(510,128),(0,0,255),3) cv2.circle(img,(447,63), 63, (0,255,0), -1) cv2.ellipse(img,(256,256),(70,100),0,0,-180,255,-1) pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32) pts = pts.reshape((-1,1,2)) cv2.polylines(img,[pts],True,(0,255,255)) font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'Morange',(10,500), font, 3,(255,255,255),2,cv2.LINE_AA)