修复调色板大小设置错误问题

This commit is contained in:
lovelyyoung 2020-08-31 15:52:01 +08:00
parent d6b6eda07a
commit 88e31b8ca2
2 changed files with 8 additions and 5 deletions

View File

@ -289,7 +289,8 @@ void ImageMatQueue::proc()
mat.release();
#else // G200
//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 back = mat(Rect(mat.cols / 2, 0, mat.cols / 2, mat.rows));
if (scanParam.imageRotateDegree != 0.0&&scanParam.imageRotateDegree!=180.0) {
@ -315,7 +316,6 @@ void ImageMatQueue::proc()
m_iaList[j]->apply(mats, scanParam.is_duplex);
}
for (int i = 0; i < mats.size(); i++) {
if (!scanParam.is_duplex && i == 1) {
mats[i].release();

View File

@ -61,12 +61,14 @@ private:
class Mat2BmpBw :public IMat2Bmp {
public:
Mat2BmpBw(const cv::Mat& mat,float res) {
m_data = std::shared_ptr<std::vector<unsigned char>>(new std::vector<unsigned char >());
int headsize = 62;
int width = mat.cols;
int height = mat.rows;
int bmpdatasize = (width + 31) / 32 * 4 * height;
m_data->resize(headsize + bmpdatasize);
unsigned char* binary = m_data->data()+62;//file header(14)+info header(40)+RGBQUAD(8)
setBmpFileHeader(mat,bmpdatasize);
setBmpInfoHeader(mat, bmpdatasize, res);
@ -104,9 +106,10 @@ private:
void setBmpFileHeader(const cv::Mat& mat,const int bmpDataLen) {
memset(&m_fileHeader, 0, sizeof(BITMAPFILEHEADER));
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;
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){