OpenCV (Open Source Computer Vision Library) เป็นไลบรารี่ที่นิยมอย่างกว้างขวางในการพัฒนาการประมวลผลภาพและวีดีโอ ซึ่งช่วยให้นักพัฒนาและนักวิจัยสามารถเข้าถึงเครื่องมือต่าง ๆ สำหรับการวิเคราะห์ภาพและการประยุกต์ใช้เกี่ยวกับคอมพิวเตอร์วิทัศน์ได้อย่างสะดวก หนึ่งในฟังก์ชันที่สำคัญของ OpenCV คือการวาด Contours ซึ่งเป็นการระบุและกำหนดขอบเขตของวัตถุในภาพ
Contours คือเส้นที่ลากผ่านพิกเซลของวัตถุในภาพที่มีค่าเดียวกัน เช่น ขอบของวัตถุ นั่นทำให้การค้นหาและวาด Contours มีความสำคัญในการแยกแยะรูปร่างหรือขนาดของวัตถุ เพื่อประยุกต์ใช้งานในงานต่าง ๆ เช่น การติดตามวัตถุ การตรวจจับรูปร่าง และการคำนวณพื้นที่
ใน OpenCV เราสามารถวาด Contours ได้ง่าย ๆ ด้วยฟังก์ชัน `cv2.drawContours()` ซึ่งฟังก์ชันนี้จะช่วยวาดเส้น Contours ลงบนภาพที่เราต้องการได้อย่างมีประสิทธิภาพ มาดูโครงสร้างและการใช้ฟังก์ชันนี้กัน
โครงสร้างของ cv2.drawContours()
cv2.drawContours(image, contours, contourIdx, color, thickness)
- image: ภาพที่เราต้องการวาด Contours ลงไป
- contours: ข้อมูลของ Contours สามารถหาได้จากฟังก์ชัน `cv2.findContours()`
- contourIdx: หากต้องการวาดทุก Contours ให้ใช้ค่า `-1` แต่ถ้าต้องการวาดเฉพาะบางอันสามารถระบุเลขดัชนีได้
- color: สีของ Contours ที่ต้องการวาด สามารถกำหนดได้เป็น BGR เช่น `(0, 255, 0)` สำหรับสีเขียว
- thickness: ความหนาของเส้น Contours
โค้ดตัวอย่างการวาด Contours
เพื่อให้เห็นภาพชัดเจน มาลองดูตัวอย่างการวาด Contours ลงบนภาพกัน:
import cv2
import numpy as np
# โหลดภาพ
image = cv2.imread('sample.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# ค้นหา edges
edges = cv2.Canny(gray, 30, 100)
# หา Contours
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# วาด Contours บนภาพ
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
# แสดงผลลัพธ์
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
ในตัวอย่างนี้ เราใช้ฟังก์ชัน `cv2.Canny()` เพื่อค้นหา edges ของภาพก่อนที่จะใช้ `cv2.findContours()` เพื่อค้นหาและเก็บข้อมูล Contours ของภาพ จากนั้นใช้ `cv2.drawContours()` เพื่อวาดเส้น Contours ที่พบลงบนภาพต้นฉบับ และแสดงผลลัพธ์
การวาด Contours มีประโยชน์ในการประมวลผลภาพมากมาย เช่น:
1. ตรวจจับวัตถุ: สามารถนำไปใช้ในการตรวจจับและแยกแยะวัตถุในภาพได้ 2. การวัดขนาด: ทราบขนาด ความยาว หรือพื้นที่ของวัตถุต่าง ๆ จากเส้น Contours 3. การติดตามวัตถุ: ใช้ในระบบติดตามวัตถุเพื่อวัดการเปลี่ยนแปลงของตำแหน่งในแต่ละเฟรม
OpenCV เป็นเครื่องมือที่มีความยืดหยุ่นสูงในการทำงานด้านการประมวลผลภาพและคอมพิวเตอร์วิทัศน์ ไม่ว่าจะเป็นการวาด Contours หรือฟังก์ชันอื่น ๆ ที่ OpenCV มีให้เลือกใช้งาน ล้วนเป็นประโยชน์ในการวิเคราะห์และประยุกต์ใช้กับโปรเจ็กต์หลากหลาย หากผู้อ่านท่านใดสนใจที่จะศึกษาเพิ่มเติมเกี่ยวกับ OpenCV หรือการเขียนโปรแกรมด้านการประมวลผลภาพ ทาง EPT (Expert-Programming-Tutor) ยินดีต้อนรับคุณในการเรียนรู้และพัฒนาทักษะที่ทันสมัยต่อไปในสายงานนี้
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM