admin
2022-08-02 c699b06ff750003b81315009e80617041748d799
ConsoleApplication/kernel.cl
@@ -51,7 +51,7 @@
}
//分隔板块数字
__kernel void split_plate_num(__global const unsigned char* img_in, __global const int* pos_in, __global const unsigned char* zero, __global const unsigned char* types, int width, int num_width, int num_height, int ele_count_per_line,int length_per_num,
__kernel void split_plate_num(__global const unsigned char* img_in, __global const int* pos_in, __global const unsigned char* zero, __global const unsigned char* types, int width, int num_width, int num_height, int ele_count_per_line, int length_per_num,
   __global unsigned char* result) {
   int index = get_global_id(0);
@@ -142,7 +142,7 @@
         temp[8] = get_binary_value(img_in[get_one_level_position(width, startx + i - 2, endy - 2)]);
         temp[9] = get_binary_value(img_in[get_one_level_position(width, startx + i - 3, endy - 2)]);
         if (temp[3] > 0 && temp[2] > 0 && temp[6] > 0 && temp[7] > 0) {
            int t = temp[0] + temp[1] + temp[4] + temp[5]+ temp[8]+ temp[9];
            int t = temp[0] + temp[1] + temp[4] + temp[5] + temp[8] + temp[9];
            if (t == 0) {
               m1_s = i - 5;
               m1_e = i;
@@ -170,7 +170,7 @@
         temp[8] = get_binary_value(img_in[get_one_level_position(width, startx + i + 2, endy - 2)]);
         temp[9] = get_binary_value(img_in[get_one_level_position(width, startx + i + 3, endy - 2)]);
         if (temp[2] > 0 && temp[3] > 0 && temp[6] > 0 && temp[7] > 0) {
            int t = temp[0] + temp[1] + temp[4] + temp[5]+ temp[8] + temp[9];
            int t = temp[0] + temp[1] + temp[4] + temp[5] + temp[8] + temp[9];
            if (t == 0) {
               m2_s = i;
               m2_e = i + 5;
@@ -194,7 +194,8 @@
         nps[9] = -1;
         nps[10] = -1;
         nps[11] = -1;
      }else {
      }
      else {
         //3个时间的坐标
         nps[0] = startx;
         nps[1] = starty;
@@ -334,7 +335,8 @@
         nps[5] = -1;
         nps[6] = -1;
         nps[7] = -1;
      }else {
      }
      else {
         nps[0] = startx;
         nps[1] = starty;
         nps[2] = startx + m_s - 1;
@@ -347,7 +349,7 @@
      }
   }
@@ -429,8 +431,8 @@
      }
   }
   //代码
   else if (type == 3) {
   //代码与数字
   else if (type == 3 || type == 4) {
      //手数
      nps[0] = startx;
      nps[1] = starty;
@@ -452,7 +454,7 @@
   //最大分割20个数
   int numCount = 0;
   //记录分割得到的数据
   int  numberCols[20*2];
   int  numberCols[20 * 2];
   int i;
   for (i = 0;i < 3;i++) {
@@ -566,7 +568,7 @@
            int index_1 = r * (num_width * 10 * num_count);
            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]);
               //printf("index:%d-findex:%d value:%d \n", index, findex, numData[r * num_width + c]);
               result[findex] = numData[r * num_width + c];
            }
         }
@@ -950,8 +952,8 @@
      }
   }
   //代码
   else if (type == 3) {
   //代码与数字
   else if (type == 3 || type == 4) {
      //手数
      nps[0] = startx;
      nps[1] = starty;
@@ -973,7 +975,7 @@
   //最大分割20个数
   int numCount = 0;
   //记录分割得到的数据
   int  numberCols[20*2];
   int  numberCols[20 * 2];
   int i;
   for (i = 0;i < 3;i++) {
@@ -2064,7 +2066,7 @@
   __global int* result) {
   int index = get_global_id(0);
   int start = index * 4;
   int startx = rowIndexs[start+0];
   int startx = rowIndexs[start + 0];
   int starty = rowIndexs[start + 1];
   int endx = rowIndexs[start + 2];
   int endy = rowIndexs[start + 3];
@@ -2080,15 +2082,20 @@
         }
      }
      if (empty) {
         unit_start = i+1;
         unit_start = i + 1;
         break;
      }
   }
   //printf("index:%d unit_start:%d\n", index, unit_start);
   int count = 0;
   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);
   if (unit_start > -1)
   {
      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);
         }
      }
   }
   if (count >= 48) {