From 88e31b8ca2a4c287d2a31011a58eadf6c1b19ce8 Mon Sep 17 00:00:00 2001 From: lovelyyoung <1002639516@qq.com> Date: Mon, 31 Aug 2020 15:52:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B0=83=E8=89=B2=E6=9D=BF?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E8=AE=BE=E7=BD=AE=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- huagao/Device/ImageMatQueue.cpp | 4 ++-- huagao/Device/ImageMatQueue.h | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/huagao/Device/ImageMatQueue.cpp b/huagao/Device/ImageMatQueue.cpp index 0e297021..7cdbc918 100644 --- a/huagao/Device/ImageMatQueue.cpp +++ b/huagao/Device/ImageMatQueue.cpp @@ -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) { @@ -314,7 +315,6 @@ void ImageMatQueue::proc() for (int j = 0; j < m_iaList.size(); j++) { m_iaList[j]->apply(mats, scanParam.is_duplex); } - for (int i = 0; i < mats.size(); i++) { if (!scanParam.is_duplex && i == 1) { diff --git a/huagao/Device/ImageMatQueue.h b/huagao/Device/ImageMatQueue.h index 5ce773b6..981d6d84 100644 --- a/huagao/Device/ImageMatQueue.h +++ b/huagao/Device/ImageMatQueue.h @@ -61,12 +61,14 @@ private: class Mat2BmpBw :public IMat2Bmp { public: Mat2BmpBw(const cv::Mat& mat,float res) { + m_data = std::shared_ptr>(new std::vector()); int headsize = 62; int width = mat.cols; int height = mat.rows; - int bmpdatasize = (width + 31) / 32 * 4*height; + 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); @@ -91,7 +93,7 @@ public: temp = 1 << (7 - pos); if (pix == 255) { - *(binary + (height - row - 1) * m_lineByte + col / 8) |= temp ; + *(binary + (height - row - 1) * m_lineByte + col / 8) |= temp; } else { @@ -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){