MotionTracker

ติดตามการเลื่อนของพื้นหลังระหว่างเฟรมหน้าจอด้วย OpenCV แบบหลายบริเวณ ไม่ตรวจจับผู้เล่นหรือหาตำแหน่งบนแผนที่ ให้ยกเว้น HUD และตัวละคร และจัดการซูมเกมภายนอกด้วยการจับคู่เทมเพลตและสเกล หากสงสัยว่ามีการซูมหรือหมุนจะได้ LOST ไม่ใช่ค่าประมาณซูม การสร้างไม่จับภาพ และแต่ละ flow เปิด tracker ได้ไม่เกิน 16 ตัว.

รูปแบบคำสั่ง

MotionTracker(region=None, exclude=None, max_displacement=80, max_gap_ms=850, max_frame_age_ms=250)

พารามิเตอร์สำหรับสร้างออบเจ็กต์

ชื่อคำอธิบาย
regionRegion | None
สี่เหลี่ยมติดตามเป็นพิกเซลหน้าจอ อยู่ภายในหน้าจอปัจจุบันทั้งหมด มีความกว้างและสูงเป็นจำนวนจำกัดที่เป็นบวก None เลือกทั้งหน้าจอ พิกัดถูกตรึงเมื่อสร้าง บริเวณที่เล็กหรือแคบเกินไปทำให้เกิดข้อผิดพลาด ให้เลือกบริเวณที่ใหญ่ขึ้น.
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: None
excludelist | tuple | None
รายการ Region ที่ยกเว้น โดยตัดตามขอบเขตติดตาม แต่ละบริเวณต้องมีความกว้างและสูงเป็นจำนวนจำกัดที่เป็นบวก พิกัดถูกตรึงเมื่อสร้าง None ไม่ยกเว้นบริเวณใด ยกเว้นได้ไม่เกิน 32 Region.
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: None
max_displacementNumber (1..256)
ระยะเลื่อนสูงสุดต่อแกนเป็นพิกเซลหน้าจอ ต้องเป็นจำนวนจำกัด ค่าเริ่มต้น 80
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 80
max_gap_msNumber (1..5000)
ช่วงห่างสูงสุดระหว่างเฟรมเป็นจำนวนเต็มมิลลิวินาที ค่าเริ่มต้น 850
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 850
max_frame_age_msNumber (1..5000)
อายุเฟรมสูงสุดเป็นจำนวนเต็มมิลลิวินาที ค่าเริ่มต้น 250
ไม่บังคับ · ระบุตามตำแหน่งหรือชื่อ
ค่าเริ่มต้น: 250

ค่าที่ส่งกลับ

ตัวอย่าง

# ติดตามการเคลื่อนที่ของพื้นหลังระหว่างเฟรมที่จับภาพ
tracker = MotionTracker()
first = tracker.update()
wait(100)
result = tracker.update()
if result.status == "TRACKED":
    print(result.dx, result.dy)
tracker.close()

เมธอด

3 เมธอด

MotionTracker.update

อ่านเฟรมปัจจุบันที่จับไว้และคืนผลการเคลื่อนที่ ต้องได้รับความยินยอมจับหน้าจอและพร้อมใช้งานแล้ว INITIALIZED ตั้งเฟรมอ้างอิง TRACKED คืนการเลื่อนที่ยอมรับ STALE ไม่เปลี่ยนเฟรมอ้างอิง LOST ล้างความต่อเนื่องเพื่อให้เฟรมใหม่ที่ใช้ได้ถัดไปเริ่มต้นใหม่ เรียกหลัง close จะเกิดข้อผิดพลาด STALE หมายถึงเฟรมซ้ำ อยู่ในอนาคต หรือเก่าเกินไปก่อนประมวลผล และไม่เปลี่ยนเฟรมอ้างอิง หากเฟรมเก่าเกินไประหว่างประมวลผล หรือ Pause ก่อนส่งมอบ จะได้ LOST โดย reason เป็น processing_frame_too_old และล้างความต่อเนื่อง.

รูปแบบคำสั่ง

tracker.update()

ค่าที่ส่งกลับ

ตัวอย่าง

ยังไม่มีในเอกสาร

MotionTracker.reset

ล้างเฟรมอ้างอิงโดยยังใช้ตัวติดตามต่อได้ เรียกหลัง close จะเกิดข้อผิดพลาด

รูปแบบคำสั่ง

tracker.reset()

ค่าที่ส่งกลับ

None

ตัวอย่าง

ยังไม่มีในเอกสาร

MotionTracker.close

ปล่อยตัวติดตาม เรียกซ้ำได้อย่างปลอดภัย ระบบปล่อย handle เมื่อ macro หรือ flow จบ หยุด หรือเกิดข้อผิดพลาดด้วย ใช้ handle ซ้ำข้าม action ใน executor เดียวกันได้ และแยกจาก flow อื่น

รูปแบบคำสั่ง

tracker.close()

ค่าที่ส่งกลับ

None

ตัวอย่าง

ยังไม่มีในเอกสาร