Lua API: tracker#

คำอธิบาย#

โครงสร้างข้อมูล tracker ใช้เพื่อช่วยการติดตามสีใน CMUcam3 มันเก็บข้อมูลเกี่ยวกับการติดตามที่กำลังทำอยู่ และพารามิเตอร์ที่สามารถตั้งค่าเพื่อควบคุมว่าสีใดถูกติดตามและด้านอื่น ๆ ของการติดตามสี TODO: เพิ่มคำอธิบายที่ดีว่ากล่องขอบเขต (bounding box) คืออะไร และเซนทรอยด์คืออะไร

ตัวอย่าง#

นี่คือตัวอย่างสั้นๆ ที่แสดงวิธีใช้ออบเจกต์ tracker เพื่อหาพื้นที่สีแดงในเฟรมภาพของ CMUcam3 แล้วพิมพ์กรอบนั้นไปยังพื้นที่ดีบักของ CamScripter ใน Eclipse

trkr = tracker_new(195, 0, 0, 255, 45, 45); -- track red
trkr:set_noise_filter(3);  -- 2 is the default

take_picture();
tracker_track_color(trkr);
print_color_tracker(trkr);  -- print color tracker info to the screen
print("num pixels tracked: " .. trkr:get_num_pixels()); -- print number of red pixels found in the picture
-- print_picture(); -- uncomment this line to print the picture itself to the screen as well (slower)

การสร้าง#

ดู tracker_new

เมธอด#

  • get_centroid_x

  • get_centroid_y

  • get_density

  • get_num_pixels

  • get_x0

  • get_x1

  • get_y0

  • get_y1

  • set_lower_bound

  • set_noise_filter

  • set_upper_bound

get_centroid_x#

trkr:get_centroid_x()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

พิกัด x จำนวนเต็มของจุดศูนย์กลางมวล

รับพิกัด x ของจุดศูนย์กลางมวลของสีที่กำลังติดตาม โดยที่ (0, 0) คือมุมบนซ้ายของภาพ

get_centroid_y#

trkr:get_centroid_y()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

พิกัด y จำนวนเต็มของจุดศูนย์กลางมวล

รับพิกัด y ของจุดศูนย์กลางมวลของสีที่กำลังติดตาม โดยที่ (0, 0) คือมุมบนซ้ายของภาพ

get_density#

trkr:get_density()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

ความหนาแน่นของสีที่กำลังถูกติดตาม

รับความหนาแน่นของสีที่ติดตามภายในบัฟเฟอร์ภาพ ความหนาแน่นคือการวัดว่าสีที่กำลังติดตามหนาแน่นเพียงใดภายในกรอบขอบเขตของตัวติดตามสี -- ยิ่งมีพิกเซลของสีที่ติดตามในกรอบมากเท่าใด ความหนาแน่นก็ยิ่งสูงขึ้นเท่านั้น

get_num_pixels#

trkr:get_num_pixels()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

จำนวนพิกเซลในบัฟเฟอร์ภาพที่ตรงกับสีของตัวติดตามสี

รับจำนวนพิกเซลทั้งหมดของสีที่กำลังติดตาม (ตามที่กำหนดโดยค่า RGB ที่ส่งไปยัง tracker_new) ที่พบในบัฟเฟอร์ภาพของ CMUcam3

get_x0#

trkr:get_x0()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

ค่าจำนวนเต็มของพิกัด x ของมุมบนซ้ายของกล่องขอบเขตการติดตามสี

เมื่อ tracker_track_color ถูกเรียก มันจะสร้างกล่องขอบเขตที่อธิบายขอบเขตของสีที่ถูกติดตามภายในภาพ (x0, y0) คือตำแหน่งของมุมบนซ้ายของกล่องนั้น และ (x1, y1) คือตำแหน่งของมุมล่างขวาของกล่องนั้นภายในบัฟเฟอร์ภาพ โดยที่ (0, 0) คือมุมบนซ้ายของบัฟเฟอร์ภาพ get_x0 ส่งกลับพิกัด x ของมุมบนซ้ายของกล่องขอบเขตสี

get_y0#

trkr:get_y0()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

ค่าจำนวนเต็มของพิกัด y ของมุมบนซ้ายของกล่องขอบเขตการติดตามสี

เมื่อ tracker_track_color ถูกเรียก มันจะสร้างกล่องขอบเขตที่อธิบายขอบเขตของสีที่ถูกติดตามภายในภาพ (x0, y0) คือตำแหน่งของมุมบนซ้ายของกล่องนั้น และ (x1, y1) คือตำแหน่งของมุมล่างขวาของกล่องนั้นภายในบัฟเฟอร์ภาพ โดยที่ (0, 0) คือมุมบนซ้ายของบัฟเฟอร์ภาพ get_y0 ส่งกลับพิกัด x ของมุมบนซ้ายของกล่องขอบเขตสี

get_x1#

trkr:get_y1()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

ค่าจำนวนเต็มของพิกัด x ของมุมล่างขวาของกล่องขอบเขตการติดตามสี

เมื่อ tracker_track_color ถูกเรียก มันจะสร้างกล่องขอบเขตที่อธิบายขอบเขตของสีที่ถูกติดตามภายในภาพ (x0, y0) คือตำแหน่งของมุมบนซ้ายของกล่องนั้น และ (x1, y1) คือตำแหน่งของมุมล่างขวาของกล่องนั้นภายในบัฟเฟอร์ภาพ โดยที่ (0, 0) คือมุมบนซ้ายของบัฟเฟอร์ภาพ get_x1 ส่งกลับพิกัด x ของมุมบนซ้ายของกล่องขอบเขตสี

get_y1#

trkr:get_y1()

พารามิเตอร์:

ไม่มี

ค่าที่ส่งคืน:

ค่าจำนวนเต็มของพิกัด y ของมุมล่างขวาของกล่องขอบเขตการติดตามสี

เมื่อ tracker_track_color ถูกเรียก มันจะสร้างกล่องขอบเขตที่อธิบายขอบเขตของสีที่ถูกติดตามภายในภาพ (x0, y0) คือตำแหน่งของมุมบนซ้ายของกล่องนั้น และ (x1, y1) คือตำแหน่งของมุมล่างขวาของกล่องนั้นภายในบัฟเฟอร์ภาพ โดยที่ (0, 0) คือมุมบนซ้ายของบัฟเฟอร์ภาพ get_y1 ส่งกลับพิกัด x ของมุมบนซ้ายของกล่องขอบเขตสี

set_lower_bound#

trkr:set_lower_bound(integer channel, integer bound)

พารามิเตอร์:

channel แชนเนลที่คุณกำลังตั้งค่าขอบเขตให้ ดูค่าคงที่แชนเนลที่สนใจใน Lua API: ค่าคงที่ bound ค่าต่ำสุดที่เป็นไปได้สำหรับแชนเนลที่กำหนด ต้องอยู่ระหว่าง 0 ถึง 255

ค่าที่ส่งคืน:

ไม่มี

ตั้งค่าขอบเขตล่างสำหรับหนึ่งแชนเนลในตัวติดตามสี ขอบเขตล่างคือค่าต่ำสุดที่พิกเซลสามารถมีได้ในแชนเนลนั้นเพื่อให้ถูกติดตาม สำหรับวัตถุประสงค์ในการติดตามสี พิกเซลใด ๆ ที่จะถือว่าติดตามได้ พิกเซลนั้นต้องอยู่ระหว่างขอบเขตล่างและขอบเขตบนในแต่ละแชนเนลของมัน

set_noise_filter#

trkr:set_noise_filter(integer filter)

พารามิเตอร์:

filter ค่าตัวกรองสัญญาณรบกวนใหม่ ค่าเริ่มต้นคือ 2

ค่าที่ส่งคืน:

ไม่มี

ค่าตัวกรองสัญญาณรบกวน (noise filter) กำหนดว่าต้องมีพิกเซลที่แอ็กทีฟติดต่อกันกี่พิกเซลก่อนหน้าพิกเซลหนึ่ง ก่อนที่พิกเซลนั้นควรจะถูกนับว่าถูกตรวจจับโดยการติดตามสี ค่าต้องอยู่ระหว่าง 0 ถึง 255

set_upper_bound#

trkr:set_upper_bound(integer channel, integer bound)

พารามิเตอร์:

channel แชนเนลที่คุณกำลังตั้งค่าขอบเขตให้ ดูค่าคงที่แชนเนลที่สนใจใน Lua API: ค่าคงที่ bound ค่าสูงสุดที่เป็นไปได้สำหรับแชนเนลที่กำหนด ต้องอยู่ระหว่าง 0 ถึง 255

ค่าที่ส่งคืน:

ไม่มี

ตั้งค่าขอบเขตบนสำหรับหนึ่งแชนเนลในตัวติดตามสี ขอบเขตบนคือค่าสูงสุดที่พิกเซลสามารถมีได้ในแชนเนลนั้นเพื่อให้ถูกติดตาม สำหรับวัตถุประสงค์ในการติดตามสี พิกเซลใด ๆ ที่จะถือว่าติดตามได้ พิกเซลนั้นต้องอยู่ระหว่างขอบเขตล่างและขอบเขตบนในแต่ละแชนเนลของมัน