## การประมวลผลภาพด้วย OpenCV: การค้นหาจุดศูนย์กลางของ Contours
การประมวลผลภาพ (Image Processing) เป็นศาสตร์หนึ่งที่ประยุกต์ใช้คอมพิวเตอร์ในการจัดการและวิเคราะห์ภาพเพื่อให้ได้มาซึ่งข้อมูลเชิงลึกหรือการเปลี่ยนแปลงที่ต้องการ และเมื่อเราพูดถึงการประมวลผลภาพ หนึ่งในเครื่องมือยอดนิยมที่ใช้อย่างกว้างขวางคือ OpenCV (Open Source Computer Vision Library) ซึ่งเป็นไลบรารีโอเพ่นซอร์สที่จัดการกับปัญหาหลากหลายด้านในเรื่องการมองเห็นของคอมพิวเตอร์
ในบทความนี้ เราจะมาทำความรู้จักเรื่องของ การค้นหาจุดศูนย์กลางของ Contours ในภาพด้วย OpenCV ซึ่งเป็นหนึ่งในพื้นฐานสำคัญที่ใช้ในหลายๆงาน เช่น การติดตามวัตถุหรือการวิเคราะห์รูปร่าง
ก่อนที่เราจะไปเริ่มเขียนโค้ด เราจำเป็นต้องมีสิ่งต่อไปนี้:
- Python (คำแนะนำให้ใช้ Python 3.x)
- OpenCV (`opencv-python`) ซึ่งสามารถติดตั้งได้ผ่าน pip
- ไลบรารี NumPy (`numpy`) สำหรับการจัดการกับข้อมูลเชิงหลักหรือ array
คุณสามารถติดตั้งแพ็กเกจเหล่านี้ได้โดยใช้คำสั่ง:
pip install opencv-python numpy
Contours คือเส้นโครงที่แสดงความต่อเนื่องของพิกเซลในภาพที่มีความเข้มเท่ากันหรือสีเดียวกัน Contours สามารถใช้ในการวิเคราะห์รูปร่างหรือเพื่อติดตามวัตถุในการประมวลผลวิดีโอ
เราจะเริ่มจากการแปลงภาพให้เป็นภาพสีขาว-ดำ จากนั้นใช้ฟังก์ชัน `findContours` ของ OpenCV เพื่อตรวจสอบ Contours ในภาพ
มาดูตัวอย่างโค้ดเบื้องต้นเพื่อค้นหา Contours กัน:
import cv2
import numpy as np
# โหลดภาพ
image = cv2.imread('example.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# แปลงภาพเป็น Binary
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# ค้นหา Contours
contours, _ = cv2.findContours(binary, 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()
เมื่อเราค้นพบ Contours แล้ว ขั้นตอนต่อไปคือการหาจุดศูนย์กลาง (Centroid) ซึ่งสามารถหาจาก moment ของภาพได้
Moment เป็นค่าทางคณิตศาสตร์ที่อธิบายถึงลักษณะของรูปร่างใน Contours และสามารถคำนวณได้โดยใช้ฟังก์ชัน `moments` ของ OpenCV
ตัวอย่างการหาจุดศูนย์กลางของ Contours มีดังนี้:
for contour in contours:
# คำนวณ Moment
M = cv2.moments(contour)
# หาจุดศูนย์กลาง
if M["m00"] != 0:
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
else:
cX, cY = 0, 0
# วาดจุดศูนย์กลางบนภาพ
cv2.circle(image, (cX, cY), 5, (255, 0, 0), -1)
cv2.imshow('Centroids', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
การค้นหาจุดศูนย์กลางของ Contours เป็นขั้นตอนเบื้องต้นที่สามารถพัฒนาไปสู่การประยุกต์ใช้ในด้านต่างๆ ได้ เช่น:
- การติดตามวัตถุในวีดีโอ: ยกตัวอย่างการใช้กล้องในระบบรักษาความปลอดภัยที่ต้องตรวจสอบการเคลื่อนไหว - การวิเคราะห์รูปทรงทางการแพทย์: ในการทำงานเช่นการวิเคราะห์เซลล์เพื่อหาจุดผิดปกติ - การพัฒนาเกมหรือแอปพลิเคชันโลกเสมือน: ที่ต้องการการตรวจจับท่าทางหรือการเคลื่อนไหวการเรียนรู้เทคนิคเหล่านี้สามารถต่อยอดให้แก่ผู้ที่ต้องการพัฒนาแอปพลิเคชันด้วยการประมวลผลภาพ ที่สำคัญคือ การฝึกฝนอย่างต่อเนื่องและพัฒนาทักษะการคิดเชิงตรรกะไปพร้อมๆ กัน
หากคุณสนใจในการพัฒนาเพิ่มเติมหรือกำลังมองหาที่เรียนรู้เพิ่มเติมเกี่ยวกับศาสตร์แห่งการเขียนโปรแกรม การเข้าร่วมเรียนกับสถานที่ที่มีชื่อเสียงอย่าง EPT (Expert-Programming-Tutor) อาจเป็นหนึ่งในทางเลือกที่จะช่วยให้ทักษะของคุณพัฒนาขึ้นไปอีกขั้น
OpenCV ยังมีศักยภาพมากมายที่รอให้คุณค้นพบและนำไปประยุกต์ใช้ในการสร้างสรรค์ผลงานของคุณต่อไป!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง 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