admin
2023-01-02 954ead41d9391bca28a3cc4f9592f73f25b3bbc8
ConsoleApplication/kernel.cl
@@ -6,8 +6,8 @@
   int p = get_global_id(0);
   int startIndex = p / width * width * num_width * num_height + p % (num_count * 10) * num_width;
   unsigned char t = 0;
   for (int r = 0;r < num_height;r++)
      for (int c = 0;c < num_width;c++) {
   for (int r = 0; r < num_height; r++)
      for (int c = 0; c < num_width; c++) {
         int index = startIndex + num_width * width * r + c;
         t += abs(a_in[index] - b_in[index]);
         if (p == 0) {
@@ -29,7 +29,7 @@
   int min = 255;
   int minIndex = 11;
   for (int i = startIndex;i < endIndex;i++)
   for (int i = startIndex; i < endIndex; i++)
   {
      if (a_in[i] < min) {
         min = a_in[i];
@@ -68,9 +68,9 @@
      int endNy = -1;
      //去除上下的白边
      int y = 0;
      for (y = starty;y <= endy;y++) {
      for (y = starty; y <= endy; y++) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -86,9 +86,9 @@
         }
      }
      for (y = endy;y >= starty;y--) {
      for (y = endy; y >= starty; y--) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -126,7 +126,7 @@
      //往前查找冒号
      int m1_s = -1, m1_e = -1, m2_s = -1, m2_e = -1;
      uchar temp[10];
      for (i = s;i > -1;i--) {
      for (i = s; i > -1; i--) {
         if (i < 5) {
            break;
         }
@@ -156,7 +156,7 @@
      //往后查找冒号
      for (i = s;i < cols;i++) {
      for (i = s; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -224,9 +224,9 @@
      int i;
      //获取是否有单位
      int last_empty_index = -1;
      for (i = endx;i >= startx;i--) {
      for (i = endx; i >= startx; i--) {
         bool empty = 1;
         for (int y = starty;y < endy;y++) {
         for (int y = starty; y < endy; y++) {
            if (get_binary_value(img_in[get_one_level_position(width, i, y)]) > 0) {
               empty = 0;
               break;
@@ -244,9 +244,9 @@
      //带有单位
      if (hasUnit) {
         for (i = endx - 11;i >= startx;i--) {
         for (i = endx - 11; i >= startx; i--) {
            bool empty = 1;
            for (int y = starty;y < endy;y++) {
            for (int y = starty; y < endy; y++) {
               if (get_binary_value(img_in[get_one_level_position(width, i, y)]) > 0) {
                  empty = 0;
                  break;
@@ -268,9 +268,9 @@
      int endNy = -1;
      //去除上下的白边
      int y = 0;
      for (y = starty;y <= endy;y++) {
      for (y = starty; y <= endy; y++) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -286,9 +286,9 @@
         }
      }
      for (y = endy;y >= starty;y--) {
      for (y = endy; y >= starty; y--) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -316,7 +316,7 @@
      int m_s = -1, m_e = -1;
      uchar temp[8];
      for (i = 0;i < cols;i++) {
      for (i = 0; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -334,7 +334,7 @@
            {
               bool empty = 1;
               for (int y = starty;y < endy - 1;y++) {
               for (int y = starty; y < endy - 1; y++) {
                  if (get_binary_value(img_in[get_one_level_position(width, startx + i + 2, y)]) > 0) {
                     empty = 0;
                     break;
@@ -408,7 +408,7 @@
      int m_s = -1, m_e = -1;
      uchar temp[8];
      int i;
      for (i = 0;i < cols;i++) {
      for (i = 0; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -426,7 +426,7 @@
            {
               bool empty = 1;
               for (int y = starty;y < endy - 1;y++) {
               for (int y = starty; y < endy - 1; y++) {
                  if (get_binary_value(img_in[get_one_level_position(width, startx + i + 2, y)]) > 0) {
                     empty = 0;
                     break;
@@ -496,9 +496,9 @@
      int percent_start = -1;
      int emptyIndex = -1;
      int i;
      for (i = startx;i <= endx;i++) {
      for (i = startx; i <= endx; i++) {
         bool empty = 1;
         for (int y = starty;y < endy;y++) {
         for (int y = starty; y < endy; y++) {
            if (get_binary_value(img_in[get_one_level_position(width, i, y)]) > 0) {
               empty = 0;
               break;
@@ -519,9 +519,9 @@
      int percent_end = -1;
      emptyIndex = -1;
      for (i = endx;i >= startx;i--) {
      for (i = endx; i >= startx; i--) {
         bool empty = 1;
         for (int y = starty;y < endy;y++) {
         for (int y = starty; y < endy; y++) {
            if (get_binary_value(img_in[get_one_level_position(width, i, y)]) > 0) {
               empty = 0;
               break;
@@ -550,7 +550,7 @@
      //按照价格的形式做识别
      int m_s = -1, m_e = -1;
      uchar temp[8];
      for (i = 0;i < cols;i++) {
      for (i = 0; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -568,7 +568,7 @@
            {
               bool empty = 1;
               for (int y = starty;y < endy - 1;y++) {
               for (int y = starty; y < endy - 1; y++) {
                  if (get_binary_value(img_in[get_one_level_position(width, startx + i + 2, y)]) > 0) {
                     empty = 0;
                     break;
@@ -615,6 +615,92 @@
   }
   //手数,带有单位手
   else if (type == 6) {
      //分隔手
      int num_end = endx;
      int emptyIndex=-1;
      int i;
      for (i = endx; i >= startx; i--) {
         bool empty = 1;
         for (int y = starty; y < endy; y++) {
            if (get_binary_value(img_in[get_one_level_position(width, i, y)]) > 0) {
               empty = 0;
               break;
            }
         }
         if (empty) {
            emptyIndex = i;
         }
         else if (emptyIndex > 0) {
            num_end = i;
            break;
         }
      }
      endx = num_end;
      //去除上下空白
      int startNy = -1;
      int endNy = -1;
      int y;
      for (y = starty; y <= endy; y++) {
         bool empty = 1;
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
            //有数据
            if (value > 0) {
               empty = 0;
               break;
            }
         }
         if (!empty) {
            startNy = y;
            break;
         }
      }
      for (y = endy; y >= starty; y--) {
         bool empty = 1;
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
            //有数据
            if (value > 0) {
               empty = 0;
               break;
            }
         }
         if (!empty) {
            endNy = y;
            break;
         }
      }
      if (endNy > 0)
      {
         endy = endNy;
      }
      if (startNy > 0)
      {
         starty = startNy;
      }
      nps[0] = startx;
      nps[1] = starty;
      nps[2] = endx;
      nps[3] = endy;
      nps[4] = -1;
      nps[5] = -1;
      nps[6] = -1;
      nps[7] = -1;
      nps[8] = -1;
      nps[9] = -1;
      nps[10] = -1;
      nps[11] = -1;
   }
   //分隔数据
@@ -624,7 +710,7 @@
   int  numberCols[20 * 2];
   int i;
   for (i = 0;i < 3;i++) {
   for (i = 0; i < 3; i++) {
      if (nps[i * 4] == -1) {
         break;
      }
@@ -637,10 +723,10 @@
      int c, startC = -1, endC = -1;
      for (c = 0;c < _cols;c++) {
      for (c = 0; c < _cols; c++) {
         bool empty = 1;
         for (int y = _starty;y <= _endy;y++) {
         for (int y = _starty; y <= _endy; y++) {
            unsigned char value = get_binary_value(img_in[get_one_level_position(width, _startx + c, y)]);
            if (value > 0) {
               empty = 0;
@@ -675,15 +761,15 @@
      }
   }
   int zeroCount = length_per_num - numCount - (one_point_num?1:0);
   int zeroCount = length_per_num - numCount - (one_point_num ? 1 : 0);
   //最大为20位数
   int fresult[20 * 2];
   for (i = 0;i < zeroCount;i++) {
   for (i = 0; i < zeroCount; i++) {
      fresult[i * 2] = -1;
      fresult[i * 2 + 1] = -1;
   }
   for (i = 0;i < numCount;i++) {
   for (i = 0; i < numCount; i++) {
      fresult[(i + zeroCount) * 2] = numberCols[i * 2];
      fresult[(i + zeroCount) * 2 + 1] = numberCols[i * 2 + 1];
   }
@@ -694,14 +780,14 @@
   }
   //开始填充数据
   for (i = 0;i < length_per_num;i++) {
   for (i = 0; i < length_per_num; i++) {
      unsigned char numData[100 * 100];
      if (fresult[i * 2] == -1) {
         //填充0
         for (int r = 0;r < num_height;r++) {
            for (int c = 0;c < num_width;c++) {
         for (int r = 0; r < num_height; r++) {
            for (int c = 0; c < num_width; c++) {
               unsigned char value = get_binary_value(zero[r * num_width + c]);
               //设置输出坐标的值 
               numData[r * num_width + c] = value;
@@ -712,8 +798,8 @@
      else {
         int _startx = fresult[i * 2];
         int _endx = fresult[i * 2 + 1];
         for (int r = starty;r <= endy;r++) {
            for (int c = 0;c < num_width;c++) {
         for (int r = starty; r <= endy; r++) {
            for (int c = 0; c < num_width; c++) {
               unsigned char value = 0;
               if (_startx + c <= _endx) {
                  //填充空白0   
@@ -734,11 +820,11 @@
      //行偏移量
      int index_2 = (num_width * 10) * (length_per_num * (index % ele_count_per_line) + i);
      for (int re = 0;re < 10;re++) {
      for (int re = 0; re < 10; re++) {
         int index_3 = re * num_width;
         for (int r = 0;r < num_height;r++) {
         for (int r = 0; r < num_height; r++) {
            int index_1 = r * (num_width * 10 * num_count);
            for (int c = 0;c < num_width;c++) {
            for (int c = 0; c < num_width; c++) {
               int findex = index_0 + index_1 + index_2 + index_3 + c;
               //printf("index:%d-findex:%d value:%d \n", index, findex, numData[r * num_width + c]);
               result[findex] = numData[r * num_width + c];
@@ -772,9 +858,9 @@
      int endNy = -1;
      //去除上下的白边
      int y = 0;
      for (y = starty;y <= endy;y++) {
      for (y = starty; y <= endy; y++) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -790,9 +876,9 @@
         }
      }
      for (y = endy;y >= starty;y--) {
      for (y = endy; y >= starty; y--) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -823,7 +909,7 @@
   //是否只有一位小数
   bool one_point_num = false;
   //时间
   if (type == 0) {
      //时间
      int s = cols / 2;
@@ -831,7 +917,7 @@
      //往前查找冒号
      int m1_s = -1, m1_e = -1, m2_s = -1, m2_e = -1;
      uchar temp[7];
      for (i = s;i > -1;i--) {
      for (i = s; i > -1; i--) {
         if (i < 6) {
            break;
         }
@@ -858,7 +944,7 @@
      //往后查找冒号
      for (i = s;i < cols;i++) {
      for (i = s; i < cols; i++) {
         if (i > cols - 6) {
            break;
         }
@@ -922,9 +1008,9 @@
      //查找单位前的空格
      int num_end = -1;
      int i;
      for (i = endx - 9;i >= startx;i--) {
      for (i = endx - 9; i >= startx; i--) {
         bool empty = 1;
         for (int y = starty;y < endy;y++) {
         for (int y = starty; y < endy; y++) {
            if (get_binary_value(img_in[get_one_level_position(width, i, y)]) > 0) {
               empty = 0;
               break;
@@ -945,9 +1031,9 @@
      int endNy = -1;
      //去除上下的白边
      int y = 0;
      for (y = starty;y <= endy;y++) {
      for (y = starty; y <= endy; y++) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -963,9 +1049,9 @@
         }
      }
      for (y = endy;y >= starty;y--) {
      for (y = endy; y >= starty; y--) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -992,7 +1078,7 @@
      //查找小数点
      int m_s = -1, m_e = -1;
      uchar temp[6];
      for (i = 0;i < cols;i++) {
      for (i = 0; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -1006,7 +1092,7 @@
         if (temp[2] > 0) {
            bool empty = 1;
            for (int y = starty;y < endy;y++) {
            for (int y = starty; y < endy; y++) {
               if (get_binary_value(img_in[get_one_level_position(width, startx + i + 2, y)]) > 0) {
                  empty = 0;
                  break;
@@ -1046,7 +1132,7 @@
         nps[6] = num_end;
         nps[7] = endy;
         if (nps[6] - nps[4] <= num_width) {
          //只有一个数字
            //只有一个数字
            one_point_num = true;
         }
@@ -1068,7 +1154,7 @@
      int m_s = -1, m_e = -1;
      uchar temp[6];
      int i;
      for (i = 0;i < cols;i++) {
      for (i = 0; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -1082,7 +1168,7 @@
         if (temp[2] > 0) {
            bool empty = 1;
            for (int y = starty;y < endy;y++) {
            for (int y = starty; y < endy; y++) {
               if (get_binary_value(img_in[get_one_level_position(width, startx + i + 2, y)]) > 0) {
                  empty = 0;
                  break;
@@ -1160,7 +1246,7 @@
   int  numberCols[20 * 2];
   int i;
   for (i = 0;i < 3;i++) {
   for (i = 0; i < 3; i++) {
      if (nps[i * 4] == -1) {
         break;
      }
@@ -1173,10 +1259,10 @@
      int c, startC = -1, endC = -1;
      for (c = 0;c < _cols;c++) {
      for (c = 0; c < _cols; c++) {
         bool empty = 1;
         for (int y = _starty;y <= _endy;y++) {
         for (int y = _starty; y <= _endy; y++) {
            unsigned char value = get_binary_value(img_in[get_one_level_position(width, _startx + c, y)]);
            if (value > 0) {
               empty = 0;
@@ -1211,34 +1297,34 @@
      }
   }
   int zeroCount = length_per_num - numCount - (one_point_num?1:0);
   int zeroCount = length_per_num - numCount - (one_point_num ? 1 : 0);
   //最大为20位数
   int fresult[20 * 2];
   for (i = 0;i < zeroCount;i++) {
   for (i = 0; i < zeroCount; i++) {
      fresult[i * 2] = -1;
      fresult[i * 2 + 1] = -1;
   }
   for (i = 0;i < numCount;i++) {
   for (i = 0; i < numCount; i++) {
      fresult[(i + zeroCount) * 2] = numberCols[i * 2];
      fresult[(i + zeroCount) * 2 + 1] = numberCols[i * 2 + 1];
   }
   //TODO 如果是金额,且后面只有1位小数的,需要在末尾填充0
   if (type == 1&& one_point_num) {
   if (type == 1 && one_point_num) {
      fresult[(numCount + zeroCount) * 2] = -1;
      fresult[(numCount + zeroCount) * 2 + 1] = -1;
   }
   //开始填充数据
   for (i = 0;i < length_per_num;i++) {
   for (i = 0; i < length_per_num; i++) {
      unsigned char numData[100 * 100];
      if (fresult[i * 2] == -1) {
         //填充0
         for (int r = 0;r < num_height;r++) {
            for (int c = 0;c < num_width;c++) {
         for (int r = 0; r < num_height; r++) {
            for (int c = 0; c < num_width; c++) {
               unsigned char value = get_binary_value(zero[r * num_width + c]);
               //设置输出坐标的值 
               numData[r * num_width + c] = value;
@@ -1249,8 +1335,8 @@
      else {
         int _startx = fresult[i * 2];
         int _endx = fresult[i * 2 + 1];
         for (int r = starty;r <= endy;r++) {
            for (int c = 0;c < num_width;c++) {
         for (int r = starty; r <= endy; r++) {
            for (int c = 0; c < num_width; c++) {
               unsigned char value = 0;
               if (_startx + c <= _endx) {
                  //填充空白0   
@@ -1271,11 +1357,11 @@
      //行偏移量
      int index_2 = (num_width * 10) * (length_per_num * (index % ele_count_per_line) + i);
      for (int re = 0;re < 10;re++) {
      for (int re = 0; re < 10; re++) {
         int index_3 = re * num_width;
         for (int r = 0;r < num_height;r++) {
         for (int r = 0; r < num_height; r++) {
            int index_1 = r * (num_width * 10 * num_count);
            for (int c = 0;c < num_width;c++) {
            for (int c = 0; c < num_width; c++) {
               int findex = index_0 + index_1 + index_2 + index_3 + c;
               //printf("index:%d-findex:%d value:%d \n", index, findex, numData[r * num_width + c]);
               result[findex] = numData[r * num_width + c];
@@ -1660,7 +1746,7 @@
         temp[5] = get_binary_value(img_in[get_one_level_position(width, startx + i + 5, endy)]);
         temp[6] = get_binary_value(img_in[get_one_level_position(width, startx + i + 2, endy - 1)]);
         temp[7] = get_binary_value(img_in[get_one_level_position(width, startx + i + 3, endy - 1)]);
         if (temp[2] > 0 && temp[3] > 0 ) {
         if (temp[2] > 0 && temp[3] > 0) {
            if (temp[0] + temp[1] + temp[4] + temp[5] + temp[6] + temp[7] == 0)
            {
@@ -2013,9 +2099,9 @@
      int endNy = -1;
      //去除上下的白边
      int y = 0;
      for (y = starty;y <= endy;y++) {
      for (y = starty; y <= endy; y++) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -2031,9 +2117,9 @@
         }
      }
      for (y = endy;y >= starty;y--) {
      for (y = endy; y >= starty; y--) {
         bool empty = 1;
         for (int x = startx;x <= endx;x++)
         for (int x = startx; x <= endx; x++)
         {
            int p = get_one_level_position(width, x, y);
            unsigned char value = get_binary_value(img_in[p]);
@@ -2062,7 +2148,7 @@
      //往前查找冒号
      int m1_s = -1, m1_e = -1, m2_s = -1, m2_e = -1;
      uchar temp[7];
      for (i = s;i > -1;i--) {
      for (i = s; i > -1; i--) {
         if (i < 6) {
            break;
         }
@@ -2089,7 +2175,7 @@
      //往后查找冒号
      for (i = s;i < cols;i++) {
      for (i = s; i < cols; i++) {
         if (i > cols - 6) {
            break;
         }
@@ -2136,10 +2222,10 @@
      if (startx > 0 && endx > 0) {
         //分隔s/m/h
         int emptyX = -1;
         for (int x = endx;x >= startx;x--) {
         for (int x = endx; x >= startx; x--) {
            bool empty = 1;
            for (int y = starty;y <= endy;y++)
            for (int y = starty; y <= endy; y++)
            {
               int p = get_one_level_position(width, x, y);
               unsigned char value = get_binary_value(img_in[p]);
@@ -2198,7 +2284,7 @@
      int m_s = -1, m_e = -1;
      uchar temp[6];
      int i;
      for (i = 0;i < cols;i++) {
      for (i = 0; i < cols; i++) {
         if (i > cols - 5) {
            break;
         }
@@ -2212,7 +2298,7 @@
         if (temp[2] > 0) {
            bool empty = 1;
            for (int y = starty;y < endy;y++) {
            for (int y = starty; y < endy; y++) {
               if (get_binary_value(img_in[get_one_level_position(width, startx + i + 2, y)]) > 0) {
                  empty = 0;
                  break;
@@ -2279,7 +2365,7 @@
   int  numberCols[12];
   int i;
   for (i = 0;i < 3;i++) {
   for (i = 0; i < 3; i++) {
      if (nps[i * 4] == -1) {
         break;
      }
@@ -2292,10 +2378,10 @@
      int c, startC = -1, endC = -1;
      for (c = 0;c < _cols;c++) {
      for (c = 0; c < _cols; c++) {
         bool empty = 1;
         for (int y = _starty;y <= _endy;y++) {
         for (int y = _starty; y <= _endy; y++) {
            unsigned char value = get_binary_value(img_in[get_one_level_position(width, _startx + c, y)]);
            if (value > 0) {
               empty = 0;
@@ -2345,25 +2431,25 @@
   int zeroCount = maxNumberCount - numCount;
   int fresult[6 * 2];
   for (i = 0;i < zeroCount;i++) {
   for (i = 0; i < zeroCount; i++) {
      fresult[i * 2] = -1;
      fresult[i * 2 + 1] = -1;
   }
   for (i = 0;i < numCount;i++) {
   for (i = 0; i < numCount; i++) {
      fresult[(i + zeroCount) * 2] = numberCols[i * 2];
      fresult[(i + zeroCount) * 2 + 1] = numberCols[i * 2 + 1];
   }
   //开始填充数据
   for (i = 0;i < maxNumberCount;i++) {
   for (i = 0; i < maxNumberCount; i++) {
      unsigned char numData[100 * 100];
      if (fresult[i * 2] == -1) {
         //填充0
         for (int r = 0;r < num_height;r++) {
            for (int c = 0;c < num_width;c++) {
         for (int r = 0; r < num_height; r++) {
            for (int c = 0; c < num_width; c++) {
               unsigned char value = get_binary_value(zero[r * num_width + c]);
               //设置输出坐标的值 
               numData[r * num_width + c] = value;
@@ -2374,8 +2460,8 @@
      else {
         int _startx = fresult[i * 2];
         int _endx = fresult[i * 2 + 1];
         for (int r = starty;r <= endy;r++) {
            for (int c = 0;c < num_width;c++) {
         for (int r = starty; r <= endy; r++) {
            for (int c = 0; c < num_width; c++) {
               unsigned char value = 0;
               if (_startx + c <= _endx) {
                  //填充空白0   
@@ -2408,11 +2494,11 @@
         index_2 += (num_width * 10) * (6 + 2 + 6 + i);
      }
      for (int re = 0;re < 10;re++) {
      for (int re = 0; re < 10; re++) {
         int index_3 = re * num_width;
         for (int r = 0;r < num_height;r++) {
         for (int r = 0; r < num_height; r++) {
            int index_1 = r * (num_width * 10 * num_count);
            for (int c = 0;c < num_width;c++) {
            for (int c = 0; c < num_width; c++) {
               int findex = index_0 + index_1 + index_2 + index_3 + c;
               //printf("index:%d-findex:%d \n",index, findex);
               result[findex] = numData[r * num_width + c];
@@ -2439,14 +2525,14 @@
   int inLineDataCount = num_width * NUMBER_COUNT * LINE_NUMBER_COUNT;
   int outLineCount = outLineDataCount * gid;
   for (int re = 0;re < LINE_NUMBER_COUNT;re++) {
      for (int n = 0;n < NUMBER_COUNT;n++)
   for (int re = 0; re < LINE_NUMBER_COUNT; re++) {
      for (int n = 0; n < NUMBER_COUNT; n++)
      {
         int index_num_0 = n * num_width * num_height;
         for (int r = 0;r < num_height;r++) {
         for (int r = 0; r < num_height; r++) {
            int intLineCount = inLineDataCount * r;
            for (int c = 0;c < num_width;c++) {
            for (int c = 0; c < num_width; c++) {
               int index_num = index_num_0 + r * num_width + c;
               unsigned char value = numbers[index_num];
               int index = outLineCount;
@@ -2484,10 +2570,10 @@
   int startRowDataIndex = 7 * 4 * gid;
   for (int i = startCol;i <= endCol;i++) {
   for (int i = startCol; i <= endCol; i++) {
      bool empty = 1;
      for (int j = startRow;j <= endRow;j++) {
      for (int j = startRow; j <= endRow; j++) {
         unsigned char value = imgs[get_one_level_position(width, i, j)];
         if (value >= 64) {
            empty = 0;
@@ -2565,7 +2651,7 @@
   }
   int emptyCount = 0;
   for (int i = 0;i < 7;i++) {
   for (int i = 0; i < 7; i++) {
      if (i == emptyColIndex1 || i == emptyColIndex2) {
         result[startRowDataIndex + 4 * i + 0] = 0;
         result[startRowDataIndex + 4 * i + 1] = 0;
@@ -2619,10 +2705,10 @@
   //排除第一列序号列
   int startRowDataIndex = (ELE_NUMBER_PER_LINE) * 4 * gid;
   for (int i = startCol;i <= endCol;i++) {
   for (int i = startCol; i <= endCol; i++) {
      bool empty = 1;
      for (int j = startRow;j <= endRow;j++) {
      for (int j = startRow; j <= endRow; j++) {
         unsigned char value = imgs[get_one_level_position(width, i, j)];
         if (value >= 64) {
            empty = 0;
@@ -2680,7 +2766,7 @@
   }
   int emptyCount = 0;
   for (int i = 0;i < ELE_NUMBER_PER_LINE;i++) {
   for (int i = 0; i < ELE_NUMBER_PER_LINE; i++) {
      result[startRowDataIndex + 4 * i + 0] = rowDataIndexs[4 * (i - emptyCount) + 0];
      result[startRowDataIndex + 4 * i + 1] = rowDataIndexs[4 * (i - emptyCount) + 1];
      result[startRowDataIndex + 4 * i + 2] = rowDataIndexs[4 * (i - emptyCount) + 2];
@@ -2696,7 +2782,7 @@
   int rowIndex = get_global_id(0);
   for (int c = 0;c < width;c++) {
   for (int c = 0; c < width; c++) {
      int index = rowIndex * width + c;
      int start = index * 3;
      unsigned char R = imgs[start];
@@ -2711,7 +2797,7 @@
   int rowIndex = get_global_id(0);
   for (int c = 0;c < width;c++) {
   for (int c = 0; c < width; c++) {
      int index = rowIndex * width + c;
      int start = index * 3;
      unsigned char R = imgs[start];
@@ -2733,7 +2819,7 @@
   int rowIndex = get_global_id(0);
   for (int c = 0;c < width;c++) {
   for (int c = 0; c < width; c++) {
      int index = rowIndex * width + c;
      int start = index * 4;
      unsigned char R = imgs[start];
@@ -2746,11 +2832,11 @@
__kernel void rgba2ThresholdInvert(const __global unsigned char* imgs, int width,
   __global unsigned char* result,int threadhold) {
   __global unsigned char* result, int threadhold) {
   int rowIndex = get_global_id(0);
   for (int c = 0;c < width;c++) {
   for (int c = 0; c < width; c++) {
      int index = rowIndex * width + c;
      int start = index * 4;
      unsigned char R = imgs[start];
@@ -2782,10 +2868,10 @@
      int endy = startx + 3;
      if (rowIndexs[startx] > 0) {
         int emptyX = -1;
         for (int x = rowIndexs[endx];x >= rowIndexs[startx];x--)
         for (int x = rowIndexs[endx]; x >= rowIndexs[startx]; x--)
         {
            bool empty = true;
            for (int y = rowIndexs[starty];y <= rowIndexs[endy];y++) {
            for (int y = rowIndexs[starty]; y <= rowIndexs[endy]; y++) {
               unsigned char value = imgs[get_one_level_position(width, x, y)];
               if (get_binary_value(value)) {
                  empty = 0;
@@ -2800,9 +2886,9 @@
         if (emptyX > 0) {
            //计算值
            unsigned char count = 0;
            for (int x = emptyX + 1;x <= rowIndexs[endx];x++)
            for (int x = emptyX + 1; x <= rowIndexs[endx]; x++)
            {
               for (int y = rowIndexs[starty];y <= rowIndexs[endy];y++) {
               for (int y = rowIndexs[starty]; y <= rowIndexs[endy]; y++) {
                  unsigned char value = imgs[get_one_level_position(width, x, y)];
                  count += get_binary_value(value) ? 1 : 0;
               }
@@ -2844,10 +2930,10 @@
         result[row * 2] = 1;
         //去除上下的空白
         for (int r = starty;r <= endy;r++)
         for (int r = starty; r <= endy; r++)
         {
            bool empty = true;
            for (int c = startx;c <= endx;c++) {
            for (int c = startx; c <= endx; c++) {
               unsigned char value = imgs[get_one_level_position(width, c, r)];
               if (get_binary_value(value)) {
                  empty = 0;
@@ -2859,10 +2945,10 @@
               break;
            }
         }
         for (int r = endy;r >= starty;r--)
         for (int r = endy; r >= starty; r--)
         {
            bool empty = true;
            for (int c = startx;c <= endx;c++) {
            for (int c = startx; c <= endx; c++) {
               unsigned char value = imgs[get_one_level_position(width, c, r)];
               if (get_binary_value(value)) {
                  empty = 0;
@@ -2877,9 +2963,9 @@
         int my = (starty + endy) / 2;
         //计算上半部分的值
         int topValue = 0;
         for (int r = starty;r <= my;r++)
         for (int r = starty; r <= my; r++)
         {
            for (int c = startx;c <= endx;c++) {
            for (int c = startx; c <= endx; c++) {
               unsigned char value = imgs[get_one_level_position(width, c, r)];
               topValue += get_binary_value(value);
@@ -2887,9 +2973,9 @@
         }
         //计算下半部分的值
         int bottomValue = 0;
         for (int r = my;r <= endy;r++)
         for (int r = my; r <= endy; r++)
         {
            for (int c = startx;c <= endx;c++) {
            for (int c = startx; c <= endx; c++) {
               unsigned char value = imgs[get_one_level_position(width, c, r)];
               bottomValue += get_binary_value(value);
@@ -2921,9 +3007,9 @@
      //printf("%d: %d %d %d %d\n",row, startx, starty, endx, endy);
      unsigned int pixelCount = 0;
      for (int r = starty;r <= endy;r++)
      for (int r = starty; r <= endy; r++)
      {
         for (int c = startx;c <= endx;c++) {
         for (int c = startx; c <= endx; c++) {
            unsigned char val = imgs[get_one_level_position(width, c, r)];
            pixelCount += get_binary_value(val);
         }
@@ -2969,9 +3055,9 @@
   //查询是否有单位
     //获取是否有单位
   int last_empty_index = -1;
   for (i = endx;i >= startx;i--) {
   for (i = endx; i >= startx; i--) {
      bool empty = 1;
      for (int y = starty;y < endy;y++) {
      for (int y = starty; y < endy; y++) {
         if (get_binary_value(imgs[get_one_level_position(width, i, y)]) > 0) {
            empty = 0;
            break;
@@ -2992,9 +3078,9 @@
      return;
   }
   for (i = endx - 11;i >= startx;i--) {
   for (i = endx - 11; i >= startx; i--) {
      bool empty = 1;
      for (int y = starty;y < endy;y++) {
      for (int y = starty; y < endy; y++) {
         if (get_binary_value(imgs[get_one_level_position(width, i, y)]) > 0) {
            empty = 0;
            break;
@@ -3011,8 +3097,8 @@
   int count = 0;
   if (unit_start > -1)
   {
      for (int c = unit_start;c <= endx;c++) {
         for (int y = starty;y <= endy;y++) {
      for (int c = unit_start; c <= endx; c++) {
         for (int y = starty; y <= endy; y++) {
            count += (get_binary_value(imgs[get_one_level_position(width, c, y)]) > 0 ? 1 : 0);
         }
      }