twain2/hugaotwainds/JpegBuffer.cpp

86 lines
1.5 KiB
C++

#include "StdAfx.h"
#include "JpegBuffer.h"
#include "jpeglib.h"
#include "twain.h"
#include "filetools.h"
#include "PublicFunc.h"
using namespace std;
JpegBuffer::JpegBuffer(cv::Mat buffer, int color_type,int side,int mFilter)
{
this->m_buffer = buffer;
this->m_color_type=color_type;
this->m_side=side;
this->m_mFilter=mFilter;
}
JpegBuffer::JpegBuffer(std::vector<cv::Mat> mats, int color_type, int mFilter)
{
this->m_buffer = mats;
this->m_color_type = color_type;
this->m_mFilter = mFilter;
}
JpegBuffer::~JpegBuffer(void)
{
}
//unsigned char* JpegBuffer::getBuffer()
//{
// return m_buffer.data;
//}
//cv::Mat JpegBuffer::buffer()
//{
// return m_buffer;
//}
//int JpegBuffer::getSize()
//{
// return m_buffer.cols;
//}
//cv::Mat JpegBuffer::getMat( int pixType)
//{
// static int inddd = 0;
// JpegLib jl;
//
// cv::Mat image = jl.decode(m_buffer, pixType);
//
// return image.clone();
//}
std::vector<cv::Mat> JpegBuffer::getMats(int pixType)
{
std::vector<cv::Mat> rets;
JpegLib jl;
for (size_t i = 0; i < m_buffer.size(); i++)
{
#ifndef G200
cv::Mat mat = cv::imdecode(m_buffer[i], pixType == TJPF_BGR ? 1 : 0);
cv::Mat front = mat(cv::Rect(0, 0, mat.cols / 2, mat.rows));
cv::Mat back = mat(cv::Rect(mat.cols / 2, 0, mat.cols / 2, mat.rows));
return { front,back };
#else
rets.push_back(jl.decode(m_buffer[i], pixType).clone());
#endif
}
return rets;
}
int JpegBuffer::getMFilter()
{
return m_mFilter;
}
int JpegBuffer::getSide()
{
return m_side;
}