mirror of http://192.168.1.51:8099/lmh188/twain3.0
修复调色板大小设置错误问题
This commit is contained in:
parent
d6b6eda07a
commit
88e31b8ca2
|
@ -289,7 +289,8 @@ void ImageMatQueue::proc()
|
||||||
mat.release();
|
mat.release();
|
||||||
#else // G200
|
#else // G200
|
||||||
//resize(mat, mat, cv::Size(), 1.001, 1.0070);//用于修正与佳能机器幅面大小不匹配问题 此系数请勿轻易动
|
//resize(mat, mat, cv::Size(), 1.001, 1.0070);//用于修正与佳能机器幅面大小不匹配问题 此系数请勿轻易动
|
||||||
//cv::imwrite("D:\\org"+to_string(++index)+".jpg", mat);
|
//cv::imwrite("D:\\bb\\"+to_string(++index)+".jpg", mat);
|
||||||
|
mats.push_back(mat);
|
||||||
Mat front = mat(Rect(0, 0, mat.cols / 2, mat.rows));
|
Mat front = mat(Rect(0, 0, mat.cols / 2, mat.rows));
|
||||||
Mat back = mat(Rect(mat.cols / 2, 0, mat.cols / 2, mat.rows));
|
Mat back = mat(Rect(mat.cols / 2, 0, mat.cols / 2, mat.rows));
|
||||||
if (scanParam.imageRotateDegree != 0.0&&scanParam.imageRotateDegree!=180.0) {
|
if (scanParam.imageRotateDegree != 0.0&&scanParam.imageRotateDegree!=180.0) {
|
||||||
|
@ -315,7 +316,6 @@ void ImageMatQueue::proc()
|
||||||
m_iaList[j]->apply(mats, scanParam.is_duplex);
|
m_iaList[j]->apply(mats, scanParam.is_duplex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < mats.size(); i++) {
|
for (int i = 0; i < mats.size(); i++) {
|
||||||
if (!scanParam.is_duplex && i == 1) {
|
if (!scanParam.is_duplex && i == 1) {
|
||||||
mats[i].release();
|
mats[i].release();
|
||||||
|
|
|
@ -61,12 +61,14 @@ private:
|
||||||
class Mat2BmpBw :public IMat2Bmp {
|
class Mat2BmpBw :public IMat2Bmp {
|
||||||
public:
|
public:
|
||||||
Mat2BmpBw(const cv::Mat& mat,float res) {
|
Mat2BmpBw(const cv::Mat& mat,float res) {
|
||||||
|
|
||||||
m_data = std::shared_ptr<std::vector<unsigned char>>(new std::vector<unsigned char >());
|
m_data = std::shared_ptr<std::vector<unsigned char>>(new std::vector<unsigned char >());
|
||||||
int headsize = 62;
|
int headsize = 62;
|
||||||
int width = mat.cols;
|
int width = mat.cols;
|
||||||
int height = mat.rows;
|
int height = mat.rows;
|
||||||
int bmpdatasize = (width + 31) / 32 * 4 * height;
|
int bmpdatasize = (width + 31) / 32 * 4 * height;
|
||||||
m_data->resize(headsize + bmpdatasize);
|
m_data->resize(headsize + bmpdatasize);
|
||||||
|
|
||||||
unsigned char* binary = m_data->data()+62;//file header(14)+info header(40)+RGBQUAD(8)
|
unsigned char* binary = m_data->data()+62;//file header(14)+info header(40)+RGBQUAD(8)
|
||||||
setBmpFileHeader(mat,bmpdatasize);
|
setBmpFileHeader(mat,bmpdatasize);
|
||||||
setBmpInfoHeader(mat, bmpdatasize, res);
|
setBmpInfoHeader(mat, bmpdatasize, res);
|
||||||
|
@ -104,9 +106,10 @@ private:
|
||||||
void setBmpFileHeader(const cv::Mat& mat,const int bmpDataLen) {
|
void setBmpFileHeader(const cv::Mat& mat,const int bmpDataLen) {
|
||||||
memset(&m_fileHeader, 0, sizeof(BITMAPFILEHEADER));
|
memset(&m_fileHeader, 0, sizeof(BITMAPFILEHEADER));
|
||||||
m_fileHeader.bfType = ((unsigned short)('M' << 8) | 'B');
|
m_fileHeader.bfType = ((unsigned short)('M' << 8) | 'B');
|
||||||
m_fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD) * 1);
|
m_fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD) * 2);
|
||||||
int nDIBSize = sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD) * 2) + bmpDataLen;
|
int nDIBSize = sizeof(BITMAPINFOHEADER) + (sizeof(RGBQUAD) * 2) + bmpDataLen;
|
||||||
m_fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + nDIBSize;
|
m_fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + nDIBSize;
|
||||||
|
m_fileHeader.bfReserved1 = m_fileHeader.bfReserved2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBmpInfoHeader(const cv::Mat& mat,const int bmpDataLen, const long res){
|
void setBmpInfoHeader(const cv::Mat& mat,const int bmpDataLen, const long res){
|
||||||
|
|
Loading…
Reference in New Issue