VisionCleanup:
- Minor cleanup and bug fixes.
- Update sender parameters.
- Enable Slower Threshold.
- Cleanup from code review.
Change-Id: I5f6ea77b42d6520e120379a5efbd312c2467c811
diff --git a/y2019/vision/target_sender.cc b/y2019/vision/target_sender.cc
index 2c7d8e2..688c676 100644
--- a/y2019/vision/target_sender.cc
+++ b/y2019/vision/target_sender.cc
@@ -289,12 +289,11 @@
TargetFinder finder_;
- // Check that our current results match possible solutions.
aos::vision::CameraParams params0;
- params0.set_exposure(400);
+ params0.set_exposure(50);
params0.set_brightness(40);
params0.set_width(640);
- // params0.set_fps(10);
+ params0.set_fps(15);
params0.set_height(480);
::std::unique_ptr<CameraStream> camera0(
@@ -302,9 +301,11 @@
camera0->set_on_frame([&](DataRef data,
monotonic_clock::time_point monotonic_now) {
aos::vision::ImageFormat fmt{640, 480};
+ // Use threshold from aos::vision. This will run at 15 FPS.
aos::vision::BlobList imgs =
- aos::vision::FindBlobs(::DoThresholdYUYV(fmt, data.data(), 120));
+ aos::vision::FindBlobs(aos::vision::DoThresholdYUYV(fmt, data.data(), 120));
finder_.PreFilter(&imgs);
+ LOG(INFO, "Blobs: (%zu).\n", imgs.size());
bool verbose = false;
std::vector<std::vector<Segment<2>>> raw_polys;
@@ -317,22 +318,27 @@
raw_polys.push_back(polygon);
}
}
+ LOG(INFO, "Polygons: (%zu).\n", raw_polys.size());
// Calculate each component side of a possible target.
std::vector<TargetComponent> target_component_list =
finder_.FillTargetComponentList(raw_polys);
+ LOG(INFO, "Components: (%zu).\n", target_component_list.size());
// Put the compenents together into targets.
std::vector<Target> target_list =
finder_.FindTargetsFromComponents(target_component_list, verbose);
+ LOG(INFO, "Potential Target: (%zu).\n", target_list.size());
// Use the solver to generate an intermediate version of our results.
std::vector<IntermediateResult> results;
for (const Target &target : target_list) {
results.emplace_back(finder_.ProcessTargetToResult(target, verbose));
}
+ LOG(INFO, "Raw Results: (%zu).\n", results.size());
- results = finder_.FilterResults(results);
+ results = finder_.FilterResults(results, 30);
+ LOG(INFO, "Results: (%zu).\n", results.size());
// TODO: Select top 3 (randomly?)