twain2/ImageBWBinaray.cpp

48 lines
985 B
C++
Raw Normal View History

#include "StdAfx.h"
#include "ImageBWBinaray.h"
CImageBWBinaray::CImageBWBinaray(bool needtoBW):needToBW(needtoBW)
{
}
CImageBWBinaray::~CImageBWBinaray(void)
{
}
void CImageBWBinaray::apply(cv::Mat& dib,int side)
{
if (needToBW)
{
if (dib.channels()!=1)
{
return;
}
threshold(dib,dib,128.0,255.0,CV_THRESH_BINARY);
}
}
void CImageBWBinaray::gray2binary(cv::Mat gray, unsigned char* binary){
if(gray.channels() != 1)
return;
int width = gray.cols;
int height = gray.rows;
int n_lineByte = (width + 7)/8;
int lineByte = (n_lineByte * 8 + 31)/32*4;
unsigned char * imageData = gray.data;
unsigned char temp;
for(int row = height -1 ; row >= 0 ; row--){
for(int col =0; col < width; col++ ){
int pos = col % 8;
int pix = *(imageData+ row * width + col);
temp = 1 << (7 - pos );
if( pix == 255 ){
*(binary + col /8) |= temp;
}else{
*(binary + col / 8 ) &= (~temp);
}
}
binary = binary + lineByte;
}
}