#include "imageencode.h" #include "memoryex.h" #include "opencv2/opencv.hpp" #include "StopWatch.h" BmpImageEncode::~BmpImageEncode() { } MemoryPtr BmpImageEncode::encode(cv::Mat &image) { VectorMemroyPtr mem = VectorMemroyPtr(new VectorMemroy()); // StopWatch sw; cv::imencode(".bmp", image, mem->buf()); // printf("encode time = %0.2f \n", sw.elapsed_ms()); return mem; } JpegImageEncode::JpegImageEncode(bool bwimg) { if (!bwimg) { compression_params.push_back(cv::IMWRITE_JPEG_QUALITY); compression_params.push_back(100); } else { compression_params.push_back(CV_IMWRITE_PNG_STRATEGY); compression_params.push_back(cv::IMWRITE_PNG_STRATEGY_FIXED); } m_bwimg = bwimg; } JpegImageEncode::~JpegImageEncode() { } MemoryPtr JpegImageEncode::encode(cv::Mat &image) { VectorMemroyPtr mem = VectorMemroyPtr(new VectorMemroy()); // StopWatch sw; cv::imencode(m_bwimg ? ".png" : ".jpg", image, mem->buf(), compression_params); // printf("!!!!!!!!!!encode time = %0.2f \n", sw.elapsed_ms()); return mem; } MemoryPtr buff2mem(void *data, int size) { auto mem = std::shared_ptr(new VectorMemroy()); mem->buf().resize(size); // memcpy(mem->buf().data(), data, size); return mem; }