#include"image_convertor.hpp"intGetType(std::string type){int ret =-1;if(!type.compare("mono8")) ret = CV_8UC1;elseif(!type.compare("8UC2")) ret = CV_8UC2;elseif(!type.compare("bgr8")) ret = CV_8UC3;elseif(!type.compare("8UC4")) ret = CV_8UC4;elseif(!type.compare("8SC1")) ret = CV_8SC1;elseif(!type.compare("8SC2")) ret = CV_8SC2;elseif(!type.compare("8SC3")) ret = CV_8SC3;elseif(!type.compare("8SC4")) ret = CV_8SC4;elseif(!type.compare("16UC1")) ret = CV_16UC1;elseif(!type.compare("16UC2")) ret = CV_16UC2;elseif(!type.compare("16UC3")) ret = CV_16UC3;elseif(!type.compare("16UC4")) ret = CV_16UC4;elseif(!type.compare("16SC1")) ret = CV_16SC1;elseif(!type.compare("16SC2")) ret = CV_16SC2;elseif(!type.compare("16SC3")) ret = CV_16SC3;elseif(!type.compare("16SC4")) ret = CV_16SC4;elseif(!type.compare("32SC1")) ret = CV_32SC1;elseif(!type.compare("32SC2")) ret = CV_32SC2;elseif(!type.compare("32SC3")) ret = CV_32SC3;elseif(!type.compare("32SC4")) ret = CV_32SC4;elseif(!type.compare("32FC1")) ret = CV_32FC1;elseif(!type.compare("32FC2")) ret = CV_32FC2;elseif(!type.compare("32FC3")) ret = CV_32FC3;elseif(!type.compare("32FC4")) ret = CV_32FC4;elseif(!type.compare("64FC1")) ret = CV_64FC1;elseif(!type.compare("64FC2")) ret = CV_64FC2;elseif(!type.compare("64FC3")) ret = CV_64FC3;elseif(!type.compare("64FC4")) ret = CV_64FC4;else;return ret;}
std::string GetType(int type){
std::string ret ="";if(type == CV_8UC1 ) ret ="mono8";elseif(type == CV_8UC2 ) ret ="8UC2";elseif(type == CV_8UC3 ) ret ="bgr8";elseif(type == CV_8UC4 ) ret ="8UC4";elseif(type == CV_8SC1 ) ret ="8SC1";elseif(type == CV_8SC2 ) ret ="8SC2";elseif(type == CV_8SC3 ) ret ="8SC3";elseif(type == CV_8SC4 ) ret ="8SC4";elseif(type == CV_16UC1) ret ="16UC1";elseif(type == CV_16UC2) ret ="16UC2";elseif(type == CV_16UC3) ret ="16UC3";elseif(type == CV_16UC4) ret ="16UC4";elseif(type == CV_16SC1) ret ="16SC1";elseif(type == CV_16SC2) ret ="16SC2";elseif(type == CV_16SC3) ret ="16SC3";elseif(type == CV_16SC4) ret ="16SC4";elseif(type == CV_32SC1) ret ="32SC1";elseif(type == CV_32SC2) ret ="32SC2";elseif(type == CV_32SC3) ret ="32SC3";elseif(type == CV_32SC4) ret ="32SC4";elseif(type == CV_32FC1) ret ="32FC1";elseif(type == CV_32FC2) ret ="32FC2";elseif(type == CV_32FC3) ret ="32FC3";elseif(type == CV_32FC4) ret ="32FC4";elseif(type == CV_64FC1) ret ="64FC1";elseif(type == CV_64FC2) ret ="64FC2";elseif(type == CV_64FC3) ret ="64FC3";elseif(type == CV_64FC4) ret ="64FC4";else;return std::move(ret);}intPixelSize(int type){int ret =0;if(type == CV_8UC1 ) ret =1;elseif(type == CV_8UC2 ) ret =2;elseif(type == CV_8UC3 ) ret =3;elseif(type == CV_8UC4 ) ret =4;elseif(type == CV_8SC1 ) ret =1;elseif(type == CV_8SC2 ) ret =2;elseif(type == CV_8SC3 ) ret =3;elseif(type == CV_8SC4 ) ret =4;elseif(type == CV_16UC1) ret =2;elseif(type == CV_16UC2) ret =4;elseif(type == CV_16UC3) ret =6;elseif(type == CV_16UC4) ret =8;elseif(type == CV_16SC1) ret =2;elseif(type == CV_16SC2) ret =4;elseif(type == CV_16SC3) ret =6;elseif(type == CV_16SC4) ret =8;elseif(type == CV_32SC1) ret =4;elseif(type == CV_32SC2) ret =8;elseif(type == CV_32SC3) ret =12;elseif(type == CV_32SC4) ret =16;elseif(type == CV_32FC1) ret =4;elseif(type == CV_32FC2) ret =8;elseif(type == CV_32FC3) ret =12;elseif(type == CV_32FC4) ret =16;elseif(type == CV_64FC1) ret =8;elseif(type == CV_64FC2) ret =16;elseif(type == CV_64FC3) ret =24;elseif(type == CV_64FC4) ret =32;else;return ret;}
std::shared_ptr<sensor_msgs::Image>CvToRos(cv::Mat& img){auto ret = std::make_shared<sensor_msgs::Image>();
ret->header.frame_id ="";
ret->header.stamp = ros::Time::now();
ret->header.seq =0;
ret->height = img.rows;
ret->width = img.cols;
ret->is_bigendian =0;
ret->encoding =GetType(img.type());
ret->step = img.cols *PixelSize(img.type());
ret->data.resize(ret->step * img.rows);memcpy(ret->data.data(), img.ptr(), ret->data.size());return ret;}
std::shared_ptr<cv::Mat>RosToCv(const sensor_msgs::Image::ConstPtr& img){auto ret = std::make_shared<cv::Mat>(
img->height, img->width,GetType(img->encoding));memcpy(ret->ptr(), img->data.data(), img->data.size());return ret;}