diff --git a/y2019/vision/BUILD b/y2019/vision/BUILD
index 78298a1..af6da5b 100644
--- a/y2019/vision/BUILD
+++ b/y2019/vision/BUILD
@@ -40,7 +40,8 @@
     target_compatible_with = ["@platforms//os:linux"],
     deps = [
         "//aos/vision/image:image_types",
-        "@com_github_google_glog//:glog",
+        "@com_google_absl//absl/log",
+        "@com_google_absl//absl/log:check",
     ],
 )
 
@@ -94,7 +95,7 @@
         "//aos/vision/blob:transpose",
         "//aos/vision/debug:debug_framework",
         "//aos/vision/math:vector",
-        "@com_github_gflags_gflags//:gflags",
+        "@com_google_absl//absl/flags:flag",
     ],
 )
 
@@ -105,6 +106,7 @@
     deps = [
         ":image_writer",
         ":target_finder",
+        "//aos:init",
         "//aos/vision/blob:codec",
         "//aos/vision/blob:find_blob",
         "//aos/vision/events:epoll_events",
@@ -115,7 +117,8 @@
         "//y2019/jevois:uart",
         "//y2019/jevois/camera:image_stream",
         "//y2019/jevois/camera:reader",
-        "@com_github_google_glog//:glog",
+        "@com_google_absl//absl/log",
+        "@com_google_absl//absl/log:check",
         "@com_google_ceres_solver//:ceres",
     ],
 )
@@ -150,6 +153,7 @@
     target_compatible_with = VISION_TARGETS,
     deps = [
         ":target_finder",
+        "//aos:init",
         "//aos/logging",
         "//aos/vision/blob:codec",
         "//aos/vision/blob:find_blob",
diff --git a/y2019/vision/debug_viewer.cc b/y2019/vision/debug_viewer.cc
index 1a93f87..31fee54 100644
--- a/y2019/vision/debug_viewer.cc
+++ b/y2019/vision/debug_viewer.cc
@@ -1,6 +1,6 @@
 #include <iostream>
 
-#include "gflags/gflags.h"
+#include "absl/flags/flag.h"
 #include <Eigen/Dense>
 
 #include "aos/vision/blob/move_scale.h"
@@ -19,7 +19,7 @@
 using aos::vision::Segment;
 using aos::vision::Vector;
 
-DEFINE_int32(camera, 10, "The camera to use the intrinsics for");
+ABSL_FLAG(int32_t, camera, 10, "The camera to use the intrinsics for");
 
 namespace y2019::vision {
 
diff --git a/y2019/vision/global_calibration.cc b/y2019/vision/global_calibration.cc
index bb3259e..b502f3b 100644
--- a/y2019/vision/global_calibration.cc
+++ b/y2019/vision/global_calibration.cc
@@ -1,5 +1,8 @@
 #include <fstream>
 
+#include "absl/flags/flag.h"
+
+#include "aos/init.h"
 #include "aos/logging/implementations.h"
 #include "aos/logging/logging.h"
 #include "aos/vision/blob/codec.h"
@@ -14,28 +17,26 @@
 // CERES Clashes with logging symbols...
 #include "ceres/ceres.h"
 
-DEFINE_int32(camera_id, -1, "The camera ID to calibrate");
-DEFINE_string(prefix, "", "The image filename prefix");
+ABSL_FLAG(int32_t, camera_id, -1, "The camera ID to calibrate");
+ABSL_FLAG(std::string, prefix, "", "The image filename prefix");
 
-DEFINE_string(constants, "y2019/vision/constants.cc",
-              "Path to the constants file to update");
+ABSL_FLAG(std::string, constants, "y2019/vision/constants.cc",
+          "Path to the constants file to update");
 
-DEFINE_double(beginning_tape_measure_reading, 11,
-              "The tape measure measurement (in inches) of the first image.");
-DEFINE_int32(image_count, 75, "The number of images to capture");
-DEFINE_double(tape_start_x, -12.5,
-              "The starting location of the tape measure in x relative to the "
-              "CG in inches.");
-DEFINE_double(tape_start_y, -0.5,
-              "The starting location of the tape measure in y relative to the "
-              "CG in inches.");
+ABSL_FLAG(double, beginning_tape_measure_reading, 11,
+          "The tape measure measurement (in inches) of the first image.");
+ABSL_FLAG(int32_t, image_count, 75, "The number of images to capture");
+ABSL_FLAG(double, tape_start_x, -12.5,
+          "The starting location of the tape measure in x relative to the "
+          "CG in inches.");
+ABSL_FLAG(double, tape_start_y, -0.5,
+          "The starting location of the tape measure in y relative to the "
+          "CG in inches.");
 
-DEFINE_double(
-    tape_direction_x, -1.0,
-    "The x component of \"1\" inch along the tape measure in meters.");
-DEFINE_double(
-    tape_direction_y, 0.0,
-    "The y component of \"1\" inch along the tape measure in meters.");
+ABSL_FLAG(double, tape_direction_x, -1.0,
+          "The x component of \"1\" inch along the tape measure in meters.");
+ABSL_FLAG(double, tape_direction_y, 0.0,
+          "The y component of \"1\" inch along the tape measure in meters.");
 
 using ::aos::monotonic_clock;
 using ::aos::events::DataSocket;
@@ -88,17 +89,18 @@
 
 void main(int argc, char **argv) {
   using namespace y2019::vision;
-  ::gflags::ParseCommandLineFlags(&argc, &argv, false);
+  aos::InitGoogle(&argc, &argv);
 
+  std::string prefix = absl::GetFlag(FLAGS_prefix);
   DatasetInfo info = {
-      FLAGS_camera_id,
-      {{FLAGS_tape_start_x * kInchesToMeters,
-        FLAGS_tape_start_y * kInchesToMeters}},
-      {{FLAGS_tape_direction_x * kInchesToMeters,
-        FLAGS_tape_direction_y * kInchesToMeters}},
-      FLAGS_beginning_tape_measure_reading,
-      FLAGS_prefix.c_str(),
-      FLAGS_image_count,
+      absl::GetFlag(FLAGS_camera_id),
+      {{absl::GetFlag(FLAGS_tape_start_x) * kInchesToMeters,
+        absl::GetFlag(FLAGS_tape_start_y) * kInchesToMeters}},
+      {{absl::GetFlag(FLAGS_tape_direction_x) * kInchesToMeters,
+        absl::GetFlag(FLAGS_tape_direction_y) * kInchesToMeters}},
+      absl::GetFlag(FLAGS_beginning_tape_measure_reading),
+      prefix.c_str(),
+      absl::GetFlag(FLAGS_image_count),
   };
 
   TargetFinder target_finder;
@@ -140,8 +142,8 @@
   ::std::cout << "error = " << summary.final_cost << ";\n";
 
   for (int i = 0; i < info.num_images; ++i) {
-    ::aos::vision::DatasetFrame frame =
-        aos::vision::LoadFile(FLAGS_prefix + std::to_string(i) + ".yuyv");
+    ::aos::vision::DatasetFrame frame = aos::vision::LoadFile(
+        absl::GetFlag(FLAGS_prefix) + std::to_string(i) + ".yuyv");
 
     const ::aos::vision::ImageFormat fmt{640, 480};
     ::aos::vision::BlobList imgs =
@@ -289,7 +291,8 @@
   results.dataset = info;
   results.intrinsics = IntrinsicParams::get(&intrinsics[0]);
   results.geometry = CameraGeometry::get(&geometry[0]);
-  DumpCameraConstants(FLAGS_constants.c_str(), info.camera_id, results);
+  DumpCameraConstants(absl::GetFlag(FLAGS_constants).c_str(), info.camera_id,
+                      results);
 }
 
 }  // namespace y2019::vision
diff --git a/y2019/vision/image_writer.cc b/y2019/vision/image_writer.cc
index 9b73a81..18b8cae 100644
--- a/y2019/vision/image_writer.cc
+++ b/y2019/vision/image_writer.cc
@@ -4,7 +4,8 @@
 
 #include <fstream>
 
-#include "glog/logging.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
 
 namespace y2019::vision {
 
diff --git a/y2019/vision/target_sender.cc b/y2019/vision/target_sender.cc
index 650693c..6be52a5 100644
--- a/y2019/vision/target_sender.cc
+++ b/y2019/vision/target_sender.cc
@@ -4,6 +4,7 @@
 #include <random>
 #include <thread>
 
+#include "aos/init.h"
 #include "aos/vision/blob/codec.h"
 #include "aos/vision/blob/find_blob.h"
 #include "aos/vision/events/socket_types.h"
@@ -18,7 +19,8 @@
 
 // This has to be last to preserve compatibility with other headers using AOS
 // logging.
-#include "glog/logging.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
 
 using ::aos::monotonic_clock;
 using ::aos::events::DataSocket;
@@ -162,13 +164,9 @@
 }
 
 int main(int argc, char **argv) {
-  (void)argc;
-  (void)argv;
   using namespace y2019::vision;
   using frc971::jevois::CameraCommand;
-  // gflags::ParseCommandLineFlags(&argc, &argv, false);
-  FLAGS_logtostderr = true;
-  google::InitGoogleLogging(argv[0]);
+  aos::InitGoogle(&argc, &argv);
 
   int itsDev = open_terminos("/dev/ttyS0");
   frc971::jevois::CobsPacketizer<frc971::jevois::uart_to_camera_size()> cobs;
