licornea_tools
yuv_export.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.png out_image.yuv ycbcr420/rgb_planar/rgb_interleaved/mono8/mono16");
11  std::string in_image_filename = in_filename_arg();
12  std::string out_yuv_image_filename = out_filename_arg();
13  std::string mode = enum_arg({ "ycbcr420", "rgb_planar", "rgb_interleaved", "mono8", "mono16" });
14 
15  if(mode == "ycbcr420") {
16  cv::Mat_<cv::Vec3b> img = cv::imread(in_image_filename, CV_LOAD_IMAGE_COLOR);
17  export_raw_color(img, out_yuv_image_filename, raw_image_format::ycbcr420);
18  } else if(mode == "rgb_planar") {
19  cv::Mat_<cv::Vec3b> img = cv::imread(in_image_filename, CV_LOAD_IMAGE_COLOR);
20  export_raw_color(img, out_yuv_image_filename, raw_image_format::rgb_planar);
21  } else if(mode == "rgb_interleaved") {
22  cv::Mat_<cv::Vec3b> img = cv::imread(in_image_filename, CV_LOAD_IMAGE_COLOR);
23  export_raw_color(img, out_yuv_image_filename, raw_image_format::rgb_interleaved);
24  } else if(mode == "mono8") {
25  cv::Mat_<uchar> img = cv::imread(in_image_filename, CV_LOAD_IMAGE_GRAYSCALE);
26  export_raw_mono(img, out_yuv_image_filename, 8);
27  } else if(mode == "mono16") {
28  cv::Mat_<uchar> img = cv::imread(in_image_filename, CV_LOAD_IMAGE_GRAYSCALE | CV_LOAD_IMAGE_ANYDEPTH);
29  export_raw_mono(img, out_yuv_image_filename, 16);
30  } else {
31  throw std::runtime_error("unknown yuv format");
32  }
33 }
void export_raw_color(const cv::Mat &img, const std::string &yuv_filename, raw_image_format form)
void export_raw_mono(const cv::Mat &img, const std::string &yuv_filename, int out_bit_depth)
std::string in_filename_arg()
Definition: args.cc:98
std::string enum_arg(const std::vector< std::string > &options)
Definition: args.cc:154
int main(int argc, const char *argv[])
Definition: yuv_export.cc:9
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