#ifndef IMAGE_PROCESS_H #define IMAGE_PROCESS_H #include "sp_image.h" #include struct cv_stream_guard { cv_stream_guard(); ~cv_stream_guard(); cv::cuda::Stream &cv_stream(); }; size_t normal_height_to_nv12(size_t height); size_t nv12_height_to_normal(size_t height); cv::Size normal_size_to_nv12(cv::Size size); cv::Size nv12_size_to_normal(cv::Size size); sp_image nv12_luma_view(const sp_image& img); sp_image nv12_chrome_view(const sp_image& img); sp_image image_debayer(const sp_image &img); // TODO: add an option for bayer type void image_resize(const sp_image &src, sp_image &dst); sp_image image_resize(const sp_image &img, cv::Size size); sp_image image_flip_y(const sp_image &img); sp_image image_rgb_to_bgr(const sp_image &img); sp_image image_rgb_to_bgra(const sp_image &img); sp_image image_rgb_to_gray(const sp_image &img); sp_image image_rgb_to_nv12(const sp_image &img); sp_image image_nv12_to_rgb(const sp_image &img); sp_image image_yuyv_to_rgb(const sp_image &img); sp_image image_warp_affine(const sp_image &img, const glm::mat3 &matrix); sp_image image_rotate(const sp_image &img, float angle, std::optional center); sp_image image_translate(const sp_image &img, glm::vec2 offset); using image_stereo_pair = std::tuple; image_stereo_pair image_stereo_split(const sp_image &img); image_stereo_pair image_stereo_split_view(const sp_image &img); sp_image image_stereo_combine(const sp_image &left, const sp_image &right); void image_save_jpg(const sp_image &img, const std::string &filename); // filename without extension void image_save_png(const sp_image &img, const std::string &filename); #include class image_output_helper { public: struct create_config { obj_name_type in_name, out_name; cv::Size size; bool flip_y = false; }; explicit image_output_helper(create_config conf); ~image_output_helper(); private: struct impl; std::unique_ptr pimpl; }; class stereo_output_helper { public: struct create_config { obj_name_type left_name, right_name; obj_name_type out_name; cv::Size size; // if empty(), will be determined from input bool halve_width = false; bool flip_y = false; }; explicit stereo_output_helper(create_config conf); ~stereo_output_helper(); private: struct impl; std::unique_ptr pimpl; }; #endif //IMAGE_PROCESS_H