#include "ImgDivider.h" bool ImgDivider::isRowFull(cv::Mat img, int row) { int cols = img.cols; int rows = img.rows; int emptyCount = 0; for (int i = 0;i < cols;i += SIMPLE_SPACE) { uchar data = img.ptr(row)[i]; if (data < BLANK_COLOR_VALUE) { //ÔÊÐí×î´óÓÐ10¸ö¿ÕÊý¾Ý if (emptyCount < 10) { emptyCount++; continue; } return false; } } return true; } bool ImgDivider::isRowFull(cv::Mat img, int row, int startCol, int endCol, int simple) { int emptyCount = 0; for (int i = startCol;i <= endCol;i += simple) { uchar data = img.ptr(row)[i]; if (data < BLANK_COLOR_VALUE) { //ÔÊÐí×î´óÓÐ10¸ö¿ÕÊý¾Ý if (emptyCount < 10) { emptyCount++; continue; } return false; } } return true; } bool ImgDivider::isRowFull(cv::Mat img, int row, int startCol, int endCol, int simple,int splitColorFrom, int splitColorTo) { int emptyCount = 0; for (int i = startCol;i <= endCol;i += simple) { uchar data = img.ptr(row)[i]; if (data > splitColorTo|| data< splitColorFrom) { //ÔÊÐí×î´óÓÐ10¸ö¿ÕÊý¾Ý if (emptyCount < 10) { emptyCount++; continue; } return false; } } return true; } bool ImgDivider::isRowEmpty(cv::Mat img, int row) { int cols = img.cols; for (int i = 0;i < cols;i += 1) { uchar data = img.ptr(row)[i]; if (data >= BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isRowEmpty(cv::Mat img, int row, int startCol, int endCol) { int cols = img.cols; int rows = img.rows; for (int i = startCol;i < endCol;i += SIMPLE_SPACE) { uchar data = img.ptr(row)[i]; if (data >= BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isRowEmpty(cv::Mat img, int row, int startCol, int endCol,int simple) { int cols = img.cols; int rows = img.rows; for (int i = startCol;i < endCol;i += simple) { uchar data = img.ptr(row)[i]; if (data >= BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isRowEmpty(cv::Mat img, int row, int startCol, int endCol, int simple, int blankColorValue) { int cols = img.cols; int rows = img.rows; for (int i = startCol;i < endCol;i += simple) { uchar data = img.ptr(row)[i]; if (data >= blankColorValue) { return false; } } return true; } bool ImgDivider::rowHasData(cv::Mat img, int row) { int cols = img.cols; int rows = img.rows; for (int i = 0;i < cols;i += SIMPLE_SPACE) { uchar data = img.ptr(row)[i]; if (data >= BLANK_COLOR_VALUE) { return true; } } return false; } bool ImgDivider::isColFull(cv::Mat img, int col, int startRow) { int cols = img.cols; int rows = img.rows; for (int i = startRow;i < rows;i += SIMPLE_SPACE) { uchar data = img.ptr(i)[col]; if (data < BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isColFull(cv::Mat img, int col, int startRow,int endRow,int simple) { for (int i = startRow;i <= endRow;i += simple) { uchar data = img.ptr(i)[col]; if (data < BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isColEmpty(cv::Mat img, int col) { int cols = img.cols; int rows = img.rows; for (int i = 0;i < rows;i += SIMPLE_SPACE) { uchar data = img.ptr(i)[col]; if (data >= BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isColEmpty(cv::Mat img, int col, int simple) { int cols = img.cols; int rows = img.rows; for (int i = 0;i < rows;i += simple) { uchar data = img.ptr(i)[col]; if (data >= BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isColEmpty(cv::Mat img, int col, int fromRow, int endRow) { int cols = img.cols; int rows = img.rows; for (int i = fromRow;i <= endRow;i += 1) { uchar data = img.ptr(i)[col]; if (data >= BLANK_COLOR_VALUE) { return false; } } return true; } bool ImgDivider::isColEmpty(cv::Mat img, int col, int fromRow, int endRow, int blankColorValue) { int cols = img.cols; int rows = img.rows; for (int i = fromRow;i <= endRow;i += 1) { uchar data = img.ptr(i)[col]; if (data >= blankColorValue) { return false; } } return true; } bool ImgDivider::colHasData(cv::Mat img, int col) { int cols = img.cols; int rows = img.rows; for (int i = 0;i < rows;i += SIMPLE_SPACE) { uchar data = img.ptr(i)[col]; if (data >= BLANK_COLOR_VALUE) { return true; } } return false; }