คำสั่งของ OpenCV ที่ใช้ในบทความนี้
- cv2.matchTemplate(ภาพต้นฉบับ,แม่แบบ,method) - อ่านเอกสารได้ที่ http://docs.opencv.org/modules/imgproc/doc/object_detection.html
- cv2.minMaxLoc() เป็นคำสั่งสำหรับใช้รับค่าตำแหน่งสูงสุดกับต่ำสุดของวัตถุ - อ่านเอกสารได้ที่ http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#minmaxloc
ผมมีไฟล์ดังนี้
100_9097.png

เป็นไฟล์ต้นฉบับ ผมต้องการแค่ป้ายตลาด
ผมเลยทำการตัดบันทึกเป็นไฟล์ชื่อ 2.PNG

โค้ด
import cv2
pic = cv2.imread('100_9097.png') # ภาพต้นฉบับ
template = cv2.imread('2.PNG',0) # แม่แบบ
image = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY) # ทำการแปลงสี
result = cv2.matchTemplate(image,template,cv2.TM_CCORR_NORMED) # ทำการจับคู่รูปภาพ
minVal,maxVal,minLoc,maxLoc = cv2.minMaxLoc(result) # รับค่าตำแหน่งสูงสุดกับต่ำสุดของวัตถุ result
loc = maxLoc
w, h = template.shape[::-1]
toploc = (loc[0] + w, loc[1] + h)
cv2.rectangle(pic,loc,toploc,(0,0,255),3) # ทำกรอบรูปภาพที่คล้ายกับแม่แบบ
cv2.imshow("Result", pic)
cv2.waitKey(0)
ผลลัพธ์

ทำการจับคู่รูปภาพด้วย OpenCV กับ Python ที่มีวัตถุหลายอัน
ในกรณีมีวัตถุที่คล้ายกันมากกว่า 1 หากต้องการจับคู่กับวัตถุเหล่านั้น สามารถศึกษาได้จากโค้ดต่อไปนี้
ไฟล์ภาพ lab2.png (ต้นฉบับ)

ไฟล์ lab21.png (แม่แบบ)

โค้ด
ผลลัพธ์

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
อยากทราบว่า
ตอบลบภาพต้นฉบับต้องเก็บไว้ในโฟลเดอร์ไหนครับ
อยากทราบว่าไฟล์ภาพต้องเก็บไว้ในโฟล์เดอร์ไหนครับ
ตอบลบถ้าใช้เป็นกล้องเว็บแคมแบบ เรียลไทม์ได้ไหมครับ ?
ตอบลบ