| | |
| | | int start = **ele; |
| | | int end = *(*ele + 1); |
| | | |
| | | LogUtil::debug("start-%d end-%d", start, end); |
| | | free(*ele); |
| | | cv::Mat img = cv::Mat(binary, cv::Rect(start, 0, end - start + 1, rows)); |
| | | resultList.push_back(img); |
| | |
| | | list<int*> ImgUtil::divideImg(cv::Mat img, bool save) { |
| | | //cv::imwrite("C:\\Users\\Administrator\\Desktop\\ocr\\demo\\0_gray.jpg", img); |
| | | clock_t start_time = clock(); |
| | | LogUtil::info("开始分隔图像"); |
| | | list<list<int*>> resultList; |
| | | |
| | | int cols = img.cols - 1; |
| | |
| | | for (int i = 10;i < rows;i++) { |
| | | bool full = ImgDivider::isRowFull(img, i); |
| | | if (full) { |
| | | LogUtil::debug("满数据行标:%d ", i); |
| | | if (startf < 0) |
| | | { |
| | | startf = i; |
| | |
| | | else { |
| | | if (startf > -1 && endf > -1) { |
| | | int width = endf - startf + 1; |
| | | LogUtil::debug("标题分隔线:%d 分割线宽:%d\n", i, width); |
| | | contentStartRow = i; |
| | | break; |
| | | } |
| | |
| | | throw string("图像分隔出错:title分隔出错"); |
| | | } |
| | | |
| | | LogUtil::debug("\n\n\n\n"); |
| | | LogUtil::info("分隔标题完成"); |
| | | |
| | | //分隔每一列数据 |
| | | startf = -1; |
| | |
| | | |
| | | bool full = ImgDivider::isColFull(img, i, contentStartRow); |
| | | if (full) { |
| | | LogUtil::debug("满数据列标:%d ", i); |
| | | if (startf < 0) |
| | | { |
| | | startf = i; |
| | |
| | | else { |
| | | if (startf > -1 && endf > -1) { |
| | | int width = endf - startf + 1; |
| | | LogUtil::debug("列数据分隔线:%d 分割线宽:%d\n", i, width); |
| | | int* dd = (int*)malloc(sizeof(int) * 2); |
| | | |
| | | *dd = startIndex; |
| | | *(dd + 1) = startf - 1; |
| | | LogUtil::debug("列数据:%d-%d\n", *dd, *(dd + 1)); |
| | | |
| | | dataColIndexs.push_back(dd); |
| | | startIndex = i; |
| | |
| | | |
| | | *dd = startIndex; |
| | | *(dd + 1) = startf - 1; |
| | | LogUtil::debug("列数据:%d-%d\n", *dd, *(dd + 1)); |
| | | |
| | | dataColIndexs.push_back(dd); |
| | | |
| | |
| | | endf = -1; |
| | | } |
| | | |
| | | LogUtil::info("列数据分割完成"); |
| | | |
| | | //分隔每一行的数据 |
| | | std::list<int*> dataItemList; |
| | |
| | | } |
| | | } |
| | | |
| | | LogUtil::debug("内容数量:%d \n", dataCount); |
| | | } |
| | | |
| | | |
| | |
| | | int startCol = *(*ele + 1); |
| | | int endRow = *(*ele + 2); |
| | | int endCol = *(*ele + 3); |
| | | LogUtil::debug("%d %d %d %d\n", startRow, startCol, endRow, endCol); |
| | | |
| | | //保存行数据 |
| | | if (save) { |
| | |
| | | |
| | | |
| | | |
| | | |
| | | LogUtil::debug("行数据数量:%d\n", rowDataSize); |
| | | //如果没有满7个数据,需要在中间补空数据 |
| | | if (rowDataSize < 7) { |
| | | //补买撤 ,补涨停 |
| | |
| | | |
| | | resultList.push_back(rowDataList); |
| | | |
| | | LogUtil::debug("%d行数据量:%zd\n", index, rowDataList.size()); |
| | | |
| | | //保存数据 |
| | | if (save) |