ฟังก์ชัน Drawing เป็นคำสั่งสำหรับใช้วาดเส้น รูปภาพ ใน OpenCV ครับ
มีคำสั่งที่ควรรู้ดังต่อไปนี้ cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putText()
วาดเส้นตรง
ใช้คำสั่ง
[python]cv2.line(img, Point pt1, Point pt2, color[,thickness[,lineType[,shift]]])[/python]
อธิบาย
- img คือ รูปภาพ
- Point pt1 คือ จุดเริ่มต้นของเส้นตรง
- Point pt2 คือ จุดสุดของเส้นตรง
- color คือ สีของเส้นตรง
- thickness คือ ความหนาของเส้น
- lineType คือ ชนิดของเส้น โดยมีชนิดของเส้นดังนี้
LINE_8 (or omitted) - 8-connected line.
LINE_4 - 4-connected line.
LINE_AA - antialiased line. - shift คือ จำนวนเศษส่วนบิตในพิกัดจุด
ตัวอย่างการวาดเส้นตรง
[python]
import numpy as np
import cv2
# สร้างรูปภาพสีดำ
img = np.zeros((512,512,3), np.uint8)
# วาดเส้นสีน้ำเงินโดยมีความหนา 5 px
cv2.line(img,(15,20),(70,50),(255,0,0),5)
#แสดงรูปภาพ
cv2.imshow("img",img)
cv2.waitKey(0)
[/python]
ผลลัพธ์
วาดวงกลม
ใช้คำสั่ง
[python]cv2.circle(img, center, radius, color[, thicknes])[/python]
อธิบาย
- img คือ รูปภาพ
- center คือ จุดศูนย์กลางของวงกลม
- radius คือ รัศมีของวงกลม
- color คือ สีของวงกลม
- thicknes คือ ความหนาของเค้าร่างวงกลม
- lineType คือ ชนิดของเส้น
- shift คือ จำนวนเศษส่วนบิตในพิกัด ของศูนย์กลาง และค่ารัศมี
ตัวอย่างการวาดวงกลม
[python]
import numpy as np
import cv2
# สร้างรูปภาพสีดำ
img = np.zeros((512,512,3), np.uint8)
# วาดวงกลมปิดสีแดง
cv2.circle(img,(200,200), 80, (0,0,255), -1)
#แสดงรูปภาพ
cv2.imshow("img",img)
cv2.waitKey(0)
[/python]
ผลลัพธ์
วาดรูปวงรี
ใช้คำสั่ง
[python]cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])[/python]
อธิบาย
- img คือ รูปภาพ
- center คือ จุดศูนย์กลางของรูปวงรี
- axes คือ ครึ่งหนึ่งของขนาดของแกนหลักของวงรี
- angle คือ หมุนมุมองศาของวงรี
- startAngle คือ องศามุมเริ่มต้นส่วนโค้งวงรี
- endAngle คือ องศามุมสิ้นสุดส่วนโค้งวงรี
- color คือ สีของวงรี
ตัวอย่างการวาดรูปวงรี
[python]
import numpy as np
import cv2
# สร้างรูปภาพสีดำ
img = np.zeros((512,512,3), np.uint8)
# วาดรูปวงรี 2 วง
cv2.ellipse(img,(200,200),(80,50),0,0,360,(0,255,0),-1)
cv2.ellipse(img,(200,200),(80,50),45,0,360,(0,0,255),1)
# แสดงรูปภาพ
cv2.imshow("img",img)
cv2.waitKey(0)
[/python]
ผลลัพธ์
วาดสี่เหลี่ยม
ใช้คำสั่ง
[python]
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
[/python]
อธิบาย
- img คือ รูปภาพ
- pt1 คือ จุดยอดของสี่เหลี่ยม
- pt2 คือ จุดยอดของสี่เหลี่ยมผืนผ้าตรงข้ามกับ pt1
- color คือ สีของสี่เหลี่ยม
ตัวอย่างการวาดสี่เหลี่ยม
[python]
import numpy as np
import cv2
# สร้างรูปภาพสีดำ
img = np.zeros((512,512,3), np.uint8)
# วาดสี่เหลี่ยม (แบบไม่เต็มรูป) สีเขียว
cv2.rectangle(img,(15,20),(70,50),(0,255,0),3)
# วาดสี่เหลี่ยมแบบเต็มรูป สีน้ำเงิน
cv2.rectangle(img,(115,120),(170,150),(255,0,0),-1)
# แสดงรูปภาพ
cv2.imshow("img",img)
cv2.waitKey(0)
[/python]
ผลลัพธ์
วาดรูปหลายเหลี่ยม
ใช้คำสั่ง
[python]cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])[/python]
อธิบาย
- img คือ รูปภาพ
- pts คือ อาร์เรย์ของส่วนโค้งรูปหลายเหลี่ยม
- npts คือ อาร์เรย์ของเคาน์เตอร์จุดยอดของรูปหลายเหลี่ยม
- ncontours คือ จำนวนของเส้นโค้ง
- isClosed คือ ตัวบ่งชี้ที่ระบุว่าวาดรูปหลายเหลี่ยมปิดหรือไม่ ถ้าจะปิดฟังก์ชันวาดเส้นจาก ยอดสุดท้ายของแต่ละโค้งถึงจุดสุดยอดก่อน
- color คือ สีของรูปหลายเหลี่ยม
- thickness คือ ความหนาของขอบรูปหลายเหลี่ยม
ตัวอย่างการวาดรูปหลายเหลี่ยม
[python]
import numpy as np
import cv2
# สร้างรูปภาพสีดำ
img = np.zeros((512,512,3), np.uint8)
# วาดรูปหลายเหลี่ยม
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))
# แสดงรูปภาพ
cv2.imshow("img",img)
cv2.waitKey(0)
[/python]
ผลลัพธ์
วาดข้อความลงไปในรูป
ใช้คำสั่ง
[python]
cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])[/python]
อธิบาย
- img คือ รูปภาพ
- text คือ ข้อความ
- org คือ มุมซ้ายด้านล่างของข้อความในรูปภาพ
- fontFace คือ ชนิดของ Font (ดูเพิ่มเติมได้จากเอกสารข้างล่างครับ)
- fontScale คือ ขนาด Scale ของ Font
- thickness คือ ความหนาของเส้นใช้วาดข้อความ
ตัวอย่างการวาดข้อความลงไปในรูป
[python]
import numpy as np
import cv2
# สร้างรูปภาพสีดำ
img = np.zeros((512,512,3), np.uint8)
# วาดข้อความลงไปในรูป
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'Hello World!',(10,500), font, 1,(255,255,255),2)
# แสดงรูปภาพ
cv2.imshow("img",img)
cv2.waitKey(0)
[/python]
ผลลัพธ์
อ่านเอกสารเพิ่มเติมได้ที่ http://docs.opencv.org/modules/core/doc/drawing_functions.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)