iwyu: //aos/vision/...
The full include-list for aos/vision/image/image_stream.h:
<chrono> // for time_point
<functional> // for _Placeholder, bind, _1, _2, placeholders
<memory> // for unique_ptr
<string> // for string
<string_view> // for basic_string_view
<utility> // for move
"aos/time/time.h" // for monotonic_clock
"aos/vision/events/epoll_events.h" // for EpollEvent
"aos/vision/image/camera_params.pb.h" // for CameraParams
"aos/vision/image/image_types.h" // for DataRef
"aos/vision/image/reader.h" // for Reader
The full include-list for aos/vision/image/image_dataset.cc:
"aos/vision/image/image_dataset.h"
<stdlib.h> // for exit
<cstdio> // for size_t, fprintf, stderr
<fstream> // for ios, operator|, basic_istream::seekg, basic_istream::read, basic_istream::tellg, ifstream
"aos/vision/image/image_types.h" // for DataRef
The full include-list for aos/vision/image/reader.h:
<linux/videodev2.h> // for v4l2_buffer
<cinttypes> // for int32_t, uint32_t
<functional> // for function
<string> // for string
"aos/time/time.h" // for monotonic_clock
"aos/vision/image/camera_params.pb.h" // for CameraParams
"aos/vision/image/image_types.h" // for ImageFormat, DataRef
namespace camera { struct Reader::Buffer; } // lines 54-54
The full include-list for aos/vision/image/reader.cc:
"aos/vision/image/reader.h"
<fcntl.h> // for open, O_NONBLOCK, O_RDWR
<linux/v4l2-controls.h> // for V4L2_CID_EXPOSURE_ABSOLUTE, V4L2_CID_BRIGHTNESS, V4L2_CID_EXPOSURE_AUTO, V4L2_CID_GAIN, v4l2_exposure_auto_type
<sys/mman.h> // for mmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE
<sys/stat.h> // for stat, S_ISCHR
<cerrno> // for errno, EINVAL, EAGAIN
<cstdio> // for size_t, NULL
<cstdlib> // for calloc
<cstring> // for memset, strerror
<utility> // for move
"aos/logging/logging.h" // for FATAL, AOS_LOG, AOS_PLOG, DEBUG, WARNING, INFO, ERROR
"aos/time/time.h" // for monotonic_clock
"aos/vision/image/V4L2.h" // for xioctl
The full include-list for aos/vision/image/jpeg_routines.h:
"aos/vision/image/image_types.h" // for DataRef, ImageFormat, ImageValue, PixelRef
The full include-list for aos/vision/image/jpeg_routines.cc:
"aos/vision/image/jpeg_routines.h"
<csetjmp> // for longjmp, jmp_buf, setjmp
<cstdint> // for uint8_t
<cstdio> // for fflush, printf, stdout, NULL, size_t
<cstring> // for memcpy
"aos/logging/logging.h" // for FATAL, AOS_LOG
"third_party/libjpeg/jpeglib.h" // for jpeg_decompress_struct, UINT8, jpeg_destroy_decompress, jpeg_error_mgr, jpeg_mem_src, jpeg_read_header, jpeg_std_error, j_decompress_ptr, jpeg_alloc_huff_table, jpeg_common_struct, jpeg_finish_decompress, jpeg_read_scanlines, jpeg_start_decompress, JCS_RGB, JHUFF_TBL, TRUE, j_common_ptr, jpeg_create_decompress, JMSG_LENGTH_MAX
The full include-list for aos/vision/math/vector.h:
<algorithm> // for fill_n
<cmath> // for atan2
<utility> // for move
"Eigen/Core" // for StorageOptions, DirectionType, outer_stride_at_compile_time<>::ret, inner_stride_at_compile_time<>::ret, DenseBase<>::IsRowMajor, traits<>::Flags, traits<>::ColsAtCompileTime, traits<>::RowsAtCompileTime, DenseBase<>::ColsAtCompileTime, AccessorLevels, DenseBase<>::RowsAtCompileTime, is_const<>::value, traits<>::MaxColsAtCompileTime, traits<>::MaxRowsAtCompileTime, accessors_level<>::value, GenericNumTraits<>::IsComplex, TraversalType, AlignmentType, is_same<>::value, DenseBase<>::SizeAtCompileTime, is_arithmetic<>::value, UnrollingType, unpacket_traits<>::alignment, DenseBase<>::MaxSizeAtCompileTime, ComparisonName, DenseBase<>::IsVectorAtCompileTime, DenseBase<>::MaxColsAtCompileTime, DenseBase<>::MaxRowsAtCompileTime, packet_traits<>::Vectorizable, Matrix, size_of_xpr_at_compile_time<>::ret, evaluator<>::Flags, DenseBase<>::InnerSizeAtCompileTime, unpacket_traits<>::size, has_ReturnType<>::value, evaluator<>::CoeffReadCost, compute_default_alignment<>::value, compute_matrix_flags<>::ret, functor_traits<>::PacketAccess, size_at_compile_time<>::ret, functor_traits<>::Cost, is_lvalue<>::value, GenericNumTraits<>::ReadCost, evaluator<>::Alignment, MapBase<>::SizeAtCompileTime, binary_evaluator<>::CoeffReadCost, operator*, traits<>::Alignment, GenericNumTraits<>::MulCost, TransformTraits, default_packet_traits::HasMul, binary_evaluator<>::Alignment, binary_evaluator<>::Flags, unary_evaluator<>::Flags, functor_has_linear_access<>::ret, functor_traits<>::IsRepeatable, traits<>::EvaluatorFlags, GenericNumTraits<>::AddCost, blas_traits<>::IsTransposed, default_packet_traits::HasAdd, unary_evaluator<>::CoeffReadCost, call_assignment, Vector3d, unary_evaluator<>::Alignment, cwise_promote_storage_order<>::value, traits<>::InnerStrideAtCompileTime, traits<>::OuterStrideAtCompileTime
"Eigen/Geometry" // for AngleAxis, MatrixBase::cross, operator*, RotationBase
The full include-list for aos/vision/math/vector_test.cc:
"aos/vision/math/vector.h"
<memory> // for allocator
"gtest/gtest.h" // for Message, TestPartResult, EXPECT_EQ, TestInfo, AssertionResult, EXPECT_NEAR, TEST_F, EXPECT_FALSE, EXPECT_TRUE, Test
The full include-list for aos/vision/blob/contour.cc:
"aos/vision/blob/contour.h"
<vector> // for vector, swap
The full include-list for aos/vision/blob/codec.h:
<stdint.h> // for uint16_t, uint32_t, uint64_t
<string.h> // for size_t, memcpy
<string> // for string
"aos/vision/blob/range_image.h" // for BlobList
The full include-list for aos/vision/blob/codec.cc:
"aos/vision/blob/codec.h"
<stddef.h> // for size_t
<utility> // for move
<vector> // for vector
The full include-list for aos/vision/blob/transpose.h:
<vector> // for vector
"aos/vision/blob/range_image.h" // for RangeImage
The full include-list for aos/vision/blob/transpose.cc:
"aos/vision/blob/transpose.h"
<algorithm> // for min, sort
<limits> // for numeric_limits
<utility> // for pair, move
The full include-list for aos/vision/blob/threshold.h:
<stdint.h> // for uint8_t
<array> // for array
<condition_variable> // for condition_variable
<functional> // for function
<mutex> // for mutex
<thread> // for thread
<type_traits> // for is_convertible
<utility> // for move
<vector> // for vector
"aos/vision/blob/range_image.h" // for ImageRange, RangeImage
"aos/vision/image/image_types.h" // for ImageFormat, ImagePtr, PixelRef
The full include-list for aos/vision/blob/threshold_test.cc:
"aos/vision/blob/threshold.h"
<stddef.h> // for size_t
<limits> // for numeric_limits
<random> // for uniform_int_distribution, minstd_rand
<vector> // for vector, allocator
"aos/vision/blob/range_image.h" // for ImageRange, RangeImage
"aos/vision/image/image_types.h" // for ImageFormat
"gtest/gtest.h" // for ASSERT_EQ, Message, TestInfo, TestPartResult, TEST_F, Test
The full include-list for aos/vision/blob/codec.h:
<stdint.h> // for uint16_t, uint32_t, uint64_t
<string.h> // for size_t, memcpy
<string> // for string
"aos/vision/blob/range_image.h" // for BlobList
The full include-list for aos/vision/blob/codec_test.cc:
"aos/vision/blob/codec.h"
<stddef.h> // for size_t
<algorithm> // for max
<utility> // for move
<vector> // for vector
"gtest/gtest.h" // for Test, EXPECT_EQ, Message, TestInfo, TestPartResult, TEST
The full include-list for aos/vision/blob/find_blob.cc:
"aos/vision/blob/find_blob.h"
<utility> // for move, swap
<vector> // for vector, swap
"aos/vision/blob/disjoint_set.h" // for DisjointSet
The full include-list for aos/vision/blob/move_scale.h:
<vector> // for vector
"aos/vision/blob/range_image.h" // for RangeImage
"aos/vision/image/image_types.h" // for ImageBBox
The full include-list for aos/vision/blob/move_scale.cc:
"aos/vision/blob/move_scale.h"
<algorithm> // for max, min
<utility> // for move
The full include-list for aos/vision/blob/transpose.h:
<vector> // for vector
"aos/vision/blob/range_image.h" // for RangeImage
The full include-list for aos/vision/blob/transpose_test.cc:
"aos/vision/blob/transpose.h"
<string> // for allocator
"aos/vision/blob/test_utils.h" // for LoadFromTestData
"gtest/gtest.h" // for Test, TestInfo, EXPECT_EQ, Message, TEST, TestPartResult
The full include-list for aos/vision/blob/threshold.h:
<stdint.h> // for uint8_t
<array> // for array
<condition_variable> // for condition_variable
<functional> // for function
<mutex> // for mutex
<thread> // for thread
<type_traits> // for is_convertible
<utility> // for move
<vector> // for vector
"aos/vision/blob/range_image.h" // for ImageRange, RangeImage
"aos/vision/image/image_types.h" // for ImageFormat, ImagePtr, PixelRef
The full include-list for aos/vision/blob/threshold.cc:
"aos/vision/blob/threshold.h"
<string.h> // for memcpy
"aos/logging/logging.h" // for AOS_CHECK_EQ
The full include-list for aos/vision/blob/hierarchical_contour_merge.cc:
"aos/vision/blob/hierarchical_contour_merge.h"
<stdint.h> // for int64_t
<algorithm> // for max
<cmath> // for sqrt
<queue> // for priority_queue
<utility> // for pair
"aos/vision/blob/disjoint_set.h" // for DisjointSet
The full include-list for aos/vision/blob/test_utils.cc:
"aos/vision/blob/test_utils.h"
<utility> // for move
<vector> // for vector
The full include-list for aos/vision/blob/range_image.h:
<iosfwd> // for ostream
<string> // for string
<utility> // for move
<vector> // for vector, operator==
"aos/vision/image/image_types.h" // for ImageFormat
The full include-list for aos/vision/blob/range_image.cc:
"aos/vision/blob/range_image.h"
<stdio.h> // for printf
<algorithm> // for reverse, sort
<ostream> // for operator<<, basic_ostream::operator<<, basic_ostream, ostream
The full include-list for aos/vision/events/epoll_events.h:
<sys/epoll.h> // for EPOLLIN
<chrono> // for duration, operator<=>, operator-, time_point, duration_cast, milliseconds, seconds
<climits> // for INT_MAX
<compare> // for operator<, operator<=, strong_ordering, operator>
<cstdint> // for uint32_t
<vector> // for vector
"aos/scoped/scoped_fd.h" // for ScopedFD
"aos/time/time.h" // for monotonic_clock
namespace aos::events { class EpollLoop; } // lines 16-16
The full include-list for aos/vision/events/epoll_events.cc:
"aos/vision/events/epoll_events.h"
<sys/epoll.h> // for epoll_event, epoll_ctl, epoll_create1, epoll_wait, EPOLLERR, EPOLLIN, EPOLLPRI, EPOLL_CTL_ADD, EPOLL_CTL_DEL
<cstring> // for NULL, size_t
<vector> // for vector
"aos/logging/logging.h" // for AOS_PCHECK, FATAL, AOS_CHECK, AOS_LOG
The full include-list for aos/vision/events/udp.h:
<string> // for string
"aos/macros.h" // for DISALLOW_COPY_AND_ASSIGN
"aos/scoped/scoped_fd.h" // for ScopedFD
The full include-list for aos/vision/events/udp.h:
<string> // for string
"aos/macros.h" // for DISALLOW_COPY_AND_ASSIGN
"aos/scoped/scoped_fd.h" // for ScopedFD
The full include-list for aos/vision/events/udp.cc:
"aos/vision/events/udp.h"
<arpa/inet.h> // for htons, htonl, inet_aton
<netinet/in.h> // for sockaddr_in, IPPROTO_UDP, INADDR_ANY, in_addr
<sys/socket.h> // for socket, AF_INET, bind, connect, recv, send, SOCK_DGRAM, sockaddr
<cstring> // for memset
<ostream> // for basic_ostream, operator<<
"glog/logging.h" // for ErrnoLogMessage, PCHECK, CHECK, COMPACT_GOOGLE_LOG_FATAL, LogMessageFatal
The full include-list for aos/vision/events/tcp_client.h:
<string> // for string
"aos/vision/events/epoll_events.h" // for EpollEvent
The full include-list for aos/vision/events/tcp_client.cc:
"aos/vision/events/tcp_client.h"
<arpa/inet.h> // for htons
<fcntl.h> // for fcntl, F_GETFL, F_SETFL, O_NONBLOCK
<netdb.h> // for gethostbyname, hostent, h_addr
<netinet/in.h> // for sockaddr_in, in_addr
<strings.h> // for bcopy, bzero
<sys/socket.h> // for connect, socket, AF_INET, SOCK_STREAM
<cstdio> // for fprintf, NULL, stderr
<cstdlib> // for exit
"aos/logging/logging.h" // for AOS_PCHECK
The full include-list for aos/vision/events/tcp_server.h:
<memory> // for unique_ptr
"aos/vision/events/epoll_events.h" // for EpollEvent
"aos/vision/events/intrusive_free_list.h" // for intrusive_free_list
namespace aos::events { class SocketConnection; } // lines 17-17
The full include-list for aos/vision/events/tcp_server.cc:
"aos/vision/events/tcp_server.h"
<arpa/inet.h> // for htonl, htons
<fcntl.h> // for fcntl, F_GETFL, F_SETFL, O_NONBLOCK
<netinet/in.h> // for sockaddr_in, INADDR_ANY, in_addr
<stdint.h> // for uint16_t
<strings.h> // for bzero
<sys/socket.h> // for accept, bind, listen, setsockopt, socket, AF_INET, sockaddr, SOCK_STREAM, SOL_SOCKET, SOMAXCONN, SO_REUSEADDR, socklen_t
<unistd.h> // for close
<cerrno> // for errno, EAGAIN, EWOULDBLOCK
"aos/logging/logging.h" // for AOS_PCHECK, INFO, WARNING, AOS_LOG, AOS_PLOG
The full include-list for aos/vision/tools/camera_primer.cc:
<stdio.h> // for fprintf, stderr
<stdlib.h> // for exit
<string> // for allocator, string
"aos/time/time.h" // for monotonic_clock
"aos/vision/events/epoll_events.h" // for EpollLoop
"aos/vision/image/camera_params.pb.h" // for CameraParams
"aos/vision/image/image_stream.h" // for ImageStreamEvent
"aos/vision/image/image_types.h" // for DataRef
Signed-off-by: Stephan Pleines <pleines.stephan@gmail.com>
Change-Id: I9963e201e6a25ec0f84d1ef544d784b772520abd
diff --git a/aos/vision/blob/codec.cc b/aos/vision/blob/codec.cc
index be11281..d3ab72d 100644
--- a/aos/vision/blob/codec.cc
+++ b/aos/vision/blob/codec.cc
@@ -1,5 +1,10 @@
#include "aos/vision/blob/codec.h"
+#include <stddef.h>
+
+#include <utility>
+#include <vector>
+
namespace aos::vision {
size_t CalculateSize(const BlobList &blob_list) {
diff --git a/aos/vision/blob/codec.h b/aos/vision/blob/codec.h
index 5872b44..1656b4a 100644
--- a/aos/vision/blob/codec.h
+++ b/aos/vision/blob/codec.h
@@ -1,6 +1,9 @@
#ifndef _AOS_VISION_BLOB_CODEC_H_
#define _AOS_VISION_BLOB_CODEC_H_
+#include <stdint.h>
+#include <string.h>
+
#include <string>
#include "aos/vision/blob/range_image.h"
diff --git a/aos/vision/blob/codec_test.cc b/aos/vision/blob/codec_test.cc
index 889dfbb..3d483a4 100644
--- a/aos/vision/blob/codec_test.cc
+++ b/aos/vision/blob/codec_test.cc
@@ -1,6 +1,10 @@
#include "aos/vision/blob/codec.h"
+#include <stddef.h>
+
#include <algorithm>
+#include <utility>
+#include <vector>
#include "gtest/gtest.h"
diff --git a/aos/vision/blob/contour.cc b/aos/vision/blob/contour.cc
index 5e82d4c..a789b77 100644
--- a/aos/vision/blob/contour.cc
+++ b/aos/vision/blob/contour.cc
@@ -1,5 +1,7 @@
#include "aos/vision/blob/contour.h"
+#include <vector>
+
namespace aos::vision {
namespace {
diff --git a/aos/vision/blob/find_blob.cc b/aos/vision/blob/find_blob.cc
index 8ee8e92..29b1640 100644
--- a/aos/vision/blob/find_blob.cc
+++ b/aos/vision/blob/find_blob.cc
@@ -1,5 +1,8 @@
#include "aos/vision/blob/find_blob.h"
+#include <utility>
+#include <vector>
+
#include "aos/vision/blob/disjoint_set.h"
namespace aos::vision {
diff --git a/aos/vision/blob/hierarchical_contour_merge.cc b/aos/vision/blob/hierarchical_contour_merge.cc
index 06c34d4..c5d3eb9 100644
--- a/aos/vision/blob/hierarchical_contour_merge.cc
+++ b/aos/vision/blob/hierarchical_contour_merge.cc
@@ -1,7 +1,11 @@
#include "aos/vision/blob/hierarchical_contour_merge.h"
+#include <stdint.h>
+
+#include <algorithm>
#include <cmath>
#include <queue>
+#include <utility>
#include "aos/vision/blob/disjoint_set.h"
diff --git a/aos/vision/blob/move_scale.cc b/aos/vision/blob/move_scale.cc
index 45337fc..ac2c30a 100644
--- a/aos/vision/blob/move_scale.cc
+++ b/aos/vision/blob/move_scale.cc
@@ -1,5 +1,8 @@
#include "aos/vision/blob/move_scale.h"
+#include <algorithm>
+#include <utility>
+
namespace aos::vision {
RangeImage MoveScale(const RangeImage &img, int dx, int dy, int scale) {
diff --git a/aos/vision/blob/move_scale.h b/aos/vision/blob/move_scale.h
index 94a9e9d..4f38bcf 100644
--- a/aos/vision/blob/move_scale.h
+++ b/aos/vision/blob/move_scale.h
@@ -1,7 +1,6 @@
#ifndef AOS_VISION_BLOB_MOVE_SCALE_H_
#define AOS_VISION_BLOB_MOVE_SCALE_H_
-#include <limits>
#include <vector>
#include "aos/vision/blob/range_image.h"
diff --git a/aos/vision/blob/range_image.cc b/aos/vision/blob/range_image.cc
index 92f77cc..ef9cc19 100644
--- a/aos/vision/blob/range_image.cc
+++ b/aos/vision/blob/range_image.cc
@@ -1,7 +1,9 @@
#include "aos/vision/blob/range_image.h"
+#include <stdio.h>
+
#include <algorithm>
-#include <cmath>
+#include <ostream>
namespace aos::vision {
namespace {
diff --git a/aos/vision/blob/range_image.h b/aos/vision/blob/range_image.h
index 10e801f..3e8c35c 100644
--- a/aos/vision/blob/range_image.h
+++ b/aos/vision/blob/range_image.h
@@ -1,6 +1,9 @@
#ifndef _AOS_VISION_BLOB_RANGE_IMAGE_H_
#define _AOS_VISION_BLOB_RANGE_IMAGE_H_
+#include <iosfwd>
+#include <string>
+#include <utility>
#include <vector>
#include "aos/vision/image/image_types.h"
diff --git a/aos/vision/blob/test_utils.cc b/aos/vision/blob/test_utils.cc
index 0e7240f..54d5fe6 100644
--- a/aos/vision/blob/test_utils.cc
+++ b/aos/vision/blob/test_utils.cc
@@ -1,5 +1,8 @@
#include "aos/vision/blob/test_utils.h"
+#include <utility>
+#include <vector>
+
namespace aos::vision {
RangeImage LoadFromTestData(int mini, const char *data) {
diff --git a/aos/vision/blob/threshold.cc b/aos/vision/blob/threshold.cc
index 5403bbd..d25ab44 100644
--- a/aos/vision/blob/threshold.cc
+++ b/aos/vision/blob/threshold.cc
@@ -1,5 +1,7 @@
#include "aos/vision/blob/threshold.h"
+#include <string.h>
+
#include "aos/logging/logging.h"
namespace aos::vision {
diff --git a/aos/vision/blob/threshold.h b/aos/vision/blob/threshold.h
index 95330c5..effd321 100644
--- a/aos/vision/blob/threshold.h
+++ b/aos/vision/blob/threshold.h
@@ -1,11 +1,16 @@
#ifndef AOS_VISION_BLOB_THRESHOLD_H_
#define AOS_VISION_BLOB_THRESHOLD_H_
+#include <stdint.h>
+
#include <array>
#include <condition_variable>
#include <functional>
#include <mutex>
#include <thread>
+#include <type_traits>
+#include <utility>
+#include <vector>
#include "aos/vision/blob/range_image.h"
#include "aos/vision/image/image_types.h"
diff --git a/aos/vision/blob/threshold_test.cc b/aos/vision/blob/threshold_test.cc
index 4b23f3e..4ec519c 100644
--- a/aos/vision/blob/threshold_test.cc
+++ b/aos/vision/blob/threshold_test.cc
@@ -1,9 +1,11 @@
#include "aos/vision/blob/threshold.h"
+#include <stddef.h>
+
+#include <limits>
#include <random>
#include <vector>
-#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "aos/vision/blob/range_image.h"
diff --git a/aos/vision/blob/transpose.cc b/aos/vision/blob/transpose.cc
index b59e8c5..25fd207 100644
--- a/aos/vision/blob/transpose.cc
+++ b/aos/vision/blob/transpose.cc
@@ -2,6 +2,7 @@
#include <algorithm>
#include <limits>
+#include <utility>
namespace aos::vision {
diff --git a/aos/vision/blob/transpose.h b/aos/vision/blob/transpose.h
index d2b609e..e2ff8b4 100644
--- a/aos/vision/blob/transpose.h
+++ b/aos/vision/blob/transpose.h
@@ -1,6 +1,8 @@
#ifndef AOS_VISION_BLOB_TRANSPOSE_H_
#define AOS_VISION_BLOB_TRANSPOSE_H_
+#include <vector>
+
#include "aos/vision/blob/range_image.h"
namespace aos::vision {
diff --git a/aos/vision/blob/transpose_test.cc b/aos/vision/blob/transpose_test.cc
index a4a9705..9eb9bac 100644
--- a/aos/vision/blob/transpose_test.cc
+++ b/aos/vision/blob/transpose_test.cc
@@ -1,6 +1,5 @@
#include "aos/vision/blob/transpose.h"
-#include <algorithm>
#include <string>
#include "gtest/gtest.h"
diff --git a/aos/vision/events/epoll_events.cc b/aos/vision/events/epoll_events.cc
index 1a5ad7e..ce3e5af 100644
--- a/aos/vision/events/epoll_events.cc
+++ b/aos/vision/events/epoll_events.cc
@@ -1,9 +1,6 @@
#include "aos/vision/events/epoll_events.h"
-#include <fcntl.h>
#include <sys/epoll.h>
-#include <sys/socket.h>
-#include <sys/types.h>
#include <cstring>
#include <vector>
diff --git a/aos/vision/events/epoll_events.h b/aos/vision/events/epoll_events.h
index e3eeb85..e78db53 100644
--- a/aos/vision/events/epoll_events.h
+++ b/aos/vision/events/epoll_events.h
@@ -3,9 +3,10 @@
#include <sys/epoll.h>
+#include <chrono>
#include <climits>
+#include <compare>
#include <cstdint>
-#include <memory>
#include <vector>
#include "aos/scoped/scoped_fd.h"
diff --git a/aos/vision/events/tcp_client.cc b/aos/vision/events/tcp_client.cc
index 65b646c..3c64add 100644
--- a/aos/vision/events/tcp_client.cc
+++ b/aos/vision/events/tcp_client.cc
@@ -4,14 +4,11 @@
#include <fcntl.h>
#include <netdb.h>
#include <netinet/in.h>
+#include <strings.h>
#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <cerrno>
#include <cstdio>
#include <cstdlib>
-#include <cstring>
#include "aos/logging/logging.h"
diff --git a/aos/vision/events/tcp_client.h b/aos/vision/events/tcp_client.h
index 16d7265..e89e0fe 100644
--- a/aos/vision/events/tcp_client.h
+++ b/aos/vision/events/tcp_client.h
@@ -1,7 +1,6 @@
#ifndef _AOS_VISION_DEBUG_TCP_CLIENT_H_
#define _AOS_VISION_DEBUG_TCP_CLIENT_H_
-#include <memory>
#include <string>
#include "aos/vision/events/epoll_events.h"
diff --git a/aos/vision/events/tcp_server.cc b/aos/vision/events/tcp_server.cc
index fa2a369..38e2874 100644
--- a/aos/vision/events/tcp_server.cc
+++ b/aos/vision/events/tcp_server.cc
@@ -2,17 +2,13 @@
#include <arpa/inet.h>
#include <fcntl.h>
-#include <netdb.h>
#include <netinet/in.h>
-#include <sys/epoll.h>
+#include <stdint.h>
+#include <strings.h>
#include <sys/socket.h>
-#include <sys/types.h>
#include <unistd.h>
#include <cerrno>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
#include "aos/logging/logging.h"
diff --git a/aos/vision/events/tcp_server.h b/aos/vision/events/tcp_server.h
index 49a5a8c..b901077 100644
--- a/aos/vision/events/tcp_server.h
+++ b/aos/vision/events/tcp_server.h
@@ -2,19 +2,21 @@
#define _AOS_VISION_EVENTS_TCP_SERVER_H_
#include <memory>
-#include <vector>
#include "aos/vision/events/epoll_events.h"
#include "aos/vision/events/intrusive_free_list.h"
namespace aos::events {
+// IWYU pragma: begin_keep
// Non-templatized base class of TCP server.
// TCPServer implements Construct which specializes the client connection
// based on the specific use-case.
template <class T>
class TCPServer;
+// IWYU pragma: end_keep
class SocketConnection;
+
class TCPServerBase : public EpollEvent {
public:
TCPServerBase(int fd) : EpollEvent(fd) {}
diff --git a/aos/vision/events/udp.cc b/aos/vision/events/udp.cc
index cf7ad23..1b1a053 100644
--- a/aos/vision/events/udp.cc
+++ b/aos/vision/events/udp.cc
@@ -1,6 +1,11 @@
#include "aos/vision/events/udp.h"
+#include <arpa/inet.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+
#include <cstring>
+#include <ostream>
#include "glog/logging.h"
diff --git a/aos/vision/events/udp.h b/aos/vision/events/udp.h
index 4acb04d..bbe5a54 100644
--- a/aos/vision/events/udp.h
+++ b/aos/vision/events/udp.h
@@ -1,13 +1,7 @@
#ifndef AOS_VISION_EVENTS_UDP_H_
#define AOS_VISION_EVENTS_UDP_H_
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <unistd.h>
-
-#include <cmath>
#include <string>
-#include <vector>
#include "aos/macros.h"
#include "aos/scoped/scoped_fd.h"
diff --git a/aos/vision/image/image_dataset.cc b/aos/vision/image/image_dataset.cc
index 82a8886..8eade2b 100644
--- a/aos/vision/image/image_dataset.cc
+++ b/aos/vision/image/image_dataset.cc
@@ -1,5 +1,8 @@
#include "aos/vision/image/image_dataset.h"
+#include <stdlib.h>
+
+#include <cstdio>
#include <fstream>
#include "aos/vision/image/image_types.h"
diff --git a/aos/vision/image/image_stream.h b/aos/vision/image/image_stream.h
index 5a45c6f..797178f 100644
--- a/aos/vision/image/image_stream.h
+++ b/aos/vision/image/image_stream.h
@@ -1,10 +1,17 @@
#ifndef AOS_VISION_IMAGE_IMAGE_STREAM_H_
#define AOS_VISION_IMAGE_IMAGE_STREAM_H_
+#include <chrono>
+#include <functional>
#include <memory>
+#include <string>
+#include <string_view>
+#include <utility>
+#include "aos/time/time.h"
#include "aos/vision/events/epoll_events.h"
#include "aos/vision/image/camera_params.pb.h"
+#include "aos/vision/image/image_types.h"
#include "aos/vision/image/reader.h"
namespace aos::vision {
diff --git a/aos/vision/image/jpeg_routines.cc b/aos/vision/image/jpeg_routines.cc
index 9d46895..1c1f738 100644
--- a/aos/vision/image/jpeg_routines.cc
+++ b/aos/vision/image/jpeg_routines.cc
@@ -1,13 +1,8 @@
#include "aos/vision/image/jpeg_routines.h"
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include <cerrno>
#include <csetjmp>
#include <cstdint>
#include <cstdio>
-#include <cstdlib>
#include <cstring>
#include "third_party/libjpeg/jpeglib.h"
diff --git a/aos/vision/image/jpeg_routines.h b/aos/vision/image/jpeg_routines.h
index 4bac976..755a205 100644
--- a/aos/vision/image/jpeg_routines.h
+++ b/aos/vision/image/jpeg_routines.h
@@ -1,11 +1,6 @@
#ifndef _AOS_VISION_IMAGE_JPEGROUTINES_H_
#define _AOS_VISION_IMAGE_JPEGROUTINES_H_
-#include <unistd.h>
-
-#include <cstdio>
-#include <cstdlib>
-
#include "aos/vision/image/image_types.h"
namespace aos::vision {
diff --git a/aos/vision/image/reader.cc b/aos/vision/image/reader.cc
index 3fbcd1d..d216490 100644
--- a/aos/vision/image/reader.cc
+++ b/aos/vision/image/reader.cc
@@ -1,20 +1,19 @@
#include "aos/vision/image/reader.h"
#include <fcntl.h>
-#include <malloc.h>
+#include <linux/v4l2-controls.h>
#include <sys/mman.h>
#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <cstring>
+#include <utility>
#include "aos/logging/logging.h"
#include "aos/time/time.h"
+#include "aos/vision/image/V4L2.h"
#define CLEAR(x) memset(&(x), 0, sizeof(x))
diff --git a/aos/vision/image/reader.h b/aos/vision/image/reader.h
index 8f7b6b7..8791403 100644
--- a/aos/vision/image/reader.h
+++ b/aos/vision/image/reader.h
@@ -1,12 +1,13 @@
#ifndef AOS_VISION_IMAGE_READER_H_
#define AOS_VISION_IMAGE_READER_H_
+#include <linux/videodev2.h>
+
#include <cinttypes>
#include <functional>
#include <string>
#include "aos/time/time.h"
-#include "aos/vision/image/V4L2.h"
#include "aos/vision/image/camera_params.pb.h"
#include "aos/vision/image/image_types.h"
@@ -52,6 +53,7 @@
// The number of buffers currently queued in v4l2.
uint32_t queued_;
struct Buffer;
+
// TODO(parker): This should be a smart pointer, but it cannot
// because the buffers are not ummapped.
Buffer *buffers_;
diff --git a/aos/vision/math/vector.h b/aos/vision/math/vector.h
index ce29901..04203e6 100644
--- a/aos/vision/math/vector.h
+++ b/aos/vision/math/vector.h
@@ -1,9 +1,12 @@
#ifndef AOS_VISION_MATH_VECTOR_H_
#define AOS_VISION_MATH_VECTOR_H_
+#include <algorithm>
#include <cmath>
+#include <utility>
-#include "Eigen/Dense"
+#include "Eigen/Core"
+#include "Eigen/Geometry"
namespace aos::vision {
diff --git a/aos/vision/math/vector_test.cc b/aos/vision/math/vector_test.cc
index 214a50c..d137d5e 100644
--- a/aos/vision/math/vector_test.cc
+++ b/aos/vision/math/vector_test.cc
@@ -1,5 +1,7 @@
#include "aos/vision/math/vector.h"
+#include <memory>
+
#include "gtest/gtest.h"
namespace aos::vision::testing {
diff --git a/aos/vision/tools/camera_primer.cc b/aos/vision/tools/camera_primer.cc
index fcd7d0b..d409d2d 100644
--- a/aos/vision/tools/camera_primer.cc
+++ b/aos/vision/tools/camera_primer.cc
@@ -1,7 +1,13 @@
-#include "aos/logging/implementations.h"
-#include "aos/logging/logging.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <string>
+
+#include "aos/time/time.h"
#include "aos/vision/events/epoll_events.h"
+#include "aos/vision/image/camera_params.pb.h"
#include "aos/vision/image/image_stream.h"
+#include "aos/vision/image/image_types.h"
class ImageStream : public aos::vision::ImageStreamEvent {
public: