10 มิถุนายน 2558

Published 6/10/2558 by with 0 comment

ฟังก์ชัน Drawing ใน OpenCV กับ Python

สวัสดีผู้อ่านทุกท่านครับ บทความจะพูดถึงเรื่อง ฟังก์ชัน Drawing ใน OpenCV กับ Python

ฟังก์ชัน 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]

ผลลัพธ์วาดเส้นตรง opencv กับ 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]

ผลลัพธ์วาดวงกลม opencv กับ 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]

ผลลัพธ์วาดรูปวงรี opencv กับ 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]

ผลลัพธ์วาดรูปสี่เหลี่ยม opencv กับ 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]

ผลลัพธ์วาดรูปหลายเหลี่ยม opencv กับ 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]

ผลลัพธ์

วาดข้อความลงไปในรูป opencv กับ python

อ่านเอกสารเพิ่มเติมได้ที่ http://docs.opencv.org/modules/core/doc/drawing_functions.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)