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){