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