licornea_tools
yuv_import.cc
Go to the documentation of this file.
1 #include "../lib/common.h"
2 #include "../lib/args.h"
3 #include "../lib/raw_image_io.h"
4 #include "../lib/image_io.h"
5 
6 using namespace tlz;
7 
8 
9 int main(int argc, const char* argv[]) {
10  get_args(argc, argv, "image.yuv out_image.png width height ycbcr420/rgb_planar/rgb_interleaved/mono8/mono16");
11  std::string in_yuv_image_filename = in_filename_arg();
12  std::string out_image_filename = out_filename_arg();
13  int width = int_arg();
14  int height = int_arg();
15  std::string mode = enum_arg({ "ycbcr420", "rgb_planar", "rgb_interleaved", "mono8", "mono16" });
16 
17  cv::Mat img;
18  if(mode == "ycbcr420")
19  img = import_raw_color(in_yuv_image_filename, width, height, raw_image_format::ycbcr420);
20  else if(mode == "rgb_planar")
21  img = import_raw_color(in_yuv_image_filename, width, height, raw_image_format::rgb_planar);
22  else if(mode == "rgb_interleaved")
23  img = import_raw_color(in_yuv_image_filename, width, height, raw_image_format::rgb_interleaved);
24  else if(mode == "mono8")
25  img = import_raw_mono(in_yuv_image_filename, width, height, 8);
26  else if(mode == "mono16")
27  img = import_raw_mono(in_yuv_image_filename, width, height, 16);
28  else
29  throw std::runtime_error("unknown yuv format");
30 
31  cv::imwrite(out_image_filename, img);
32 }
cv::Mat import_raw_mono(const std::string &yuv_filename, int width, int height, int bit_depth)
std::string in_filename_arg()
Definition: args.cc:98
int main(int argc, const char *argv[])
Definition: yuv_import.cc:9
std::string enum_arg(const std::vector< std::string > &options)
Definition: args.cc:154
cv::Mat import_raw_color(const std::string &yuv_filename, int width, int height, raw_image_format form)
long int_arg()
Definition: args.cc:138
std::string out_filename_arg()
Definition: args.cc:104
std::string mode
void get_args(int argc, const char *argv[], const std::string &usage)
Definition: args.cc:49