11 มิถุนายน 2558

Published 6/11/2558 by with 0 comment

ติดตามสีด้วย OpenCV กับ Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปเขียนโปรแกรมตรวจจับวัตถุด้วยการติดตามสีด้วย OpenCV กับภาษา Python กันครับ :D

อ่านบทความก่อนหน้านี้ได้จาก Tag OpenCV

ในการตรวจจับวัตถุจากการติดตามสีด้วย OpenCV กับ Python มีคำสั่งใช้งานดังนี้ครับ

[python]cv2.inRange(hsv,ค่าสี HSV ช่วงเริ่มต้น , ค่าสี HSV ช่วงสิ้นสุด) [/python]

เป็นคำสั่งใช้ตรวจจับสีที่อยู่ในช่วงสี HSV ที่กำหนดครับ ในการกำหนดค่าสี HSV ช่วงเริ่มต้น - สิ้นสุด ส่วนใหญ่จะใช้โมดูล numpy เข้ามาช่วยเรื่องการเขียนช่วงข้อมูลสี HSV ครับ

[python]cv2.bitwise_and(cv2.bitwise_and(src1, src2[, dst[, mask]])) [/python]


  • src1 - ชุดข้อมูลแรก

  • src2 - ชุดข้อมูลที่สอง

  • dst - ชุดข้อมูลผลลัพธ์ที่มีขนาดและชนิดเดียวกันเป็นชุดข้อมูลสำหรับการป้อนค่า

  • mask – เป็นเหมือนหน้ากากที่รับค่ามารวมด้วย


คำสั่งนี้ส่วนใหญ่มักจะนำเฟรมปกติกับเฟรมจากคำสั่ง cv2.inRange() มารวมกันเพื่อเปรียบเทียบกับสีจริงครับ

เรามาลองเขียนโปรแกรมตรวจจับช่วงสีเหลืองด้วย OpenCV กับ Python กันครับ

[python]
import cv2
import numpy as np

cap = cv2.VideoCapture(0) # รับวิดีโอจากกล้อง

while(1):

# รับข้อมูลจากเว็บแคม
_, frame = cap.read()

# แปลงสี BGR ไปยัง HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

# ช่วงของสีเหลืองในระบบ HSV
lower_yellow = np.array([10,100,100], dtype=np.uint8)
upper_yellow = np.array([30,255,255], dtype=np.uint8)

# จำกัดภาพ HSV รับเฉพาะสีเหลิอง
yellow = cv2.inRange(hsv, lower_yellow, upper_yellow)

# Bitwise-AND mask และภาพต้นฉบับ
mask = cv2.bitwise_and(frame,frame, mask= yellow)

cv2.imshow('frame',frame)
cv2.imshow('yellow',yellow)
cv2.imshow('mask',mask)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break

cv2.destroyAllWindows()
[/python]

ผลลัพธ์

ตรวจจับวัตถุจากสีด้วย OpenCV กับ Python

สามารถเลือกค่าสี HSV ได้ตามวิธีในเว็บนี้ครับ http://www.workwithcolor.com/red-color-hue-range-01.htm
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

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

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

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