From 30f434d78b58e3a4198cf5ba5a9e5a0ce1cd5292 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 07 七月 2022 14:32:36 +0800 Subject: [PATCH] 'bug修复' --- ConsoleApplication/kernel.cl | 227 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 172 insertions(+), 55 deletions(-) diff --git a/ConsoleApplication/kernel.cl b/ConsoleApplication/kernel.cl index 9ab5447..6fe90db 100644 --- a/ConsoleApplication/kernel.cl +++ b/ConsoleApplication/kernel.cl @@ -61,53 +61,56 @@ int endx = pos_in[startP + 2]; int endy = pos_in[startP + 3]; - int startNy = -1; - int endNy = -1; - //去除上下的白边 - int y = 0; - 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; + if (startx > 0) + { + int startNy = -1; + int endNy = -1; + //去除上下的白边 + int y = 0; + 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; } } - 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; + 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 (!empty) { - endNy = y; - break; - } + starty = startNy; + endy = endNy; } - - starty = startNy; - endy = endNy; int cols = endx - startx + 1; int rows = endy - starty + 1; int nps[12]; - if (index % 3 == 0) { + if (index % 4 == 0) { + //时间 int s = cols / 2; int i; //往前查找冒号 @@ -183,12 +186,68 @@ nps[11] = endy; } + else if (index % 4 == 1) { + if (startx > 0 && endx > 0) { + //分隔s/m/h + int emptyX = -1; + for (int x = endx;x >= startx;x--) { - else if (index % 3 == 1) { + bool empty = 1; + 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]); + //有数据 + if (value > 0) { + empty = 0; + break; + } + } + if (empty) { + emptyX = x; + break; + } + } + if (emptyX > 0) { + nps[0] = startx; + nps[1] = starty; + nps[2] = emptyX - 1; + nps[3] = endy; + } + else { + //printf("撤单时间未解析到分隔符:%d", index); + nps[0] = -1; + nps[1] = -1; + nps[2] = -1; + nps[3] = -1; + } + } + else { + nps[0] = -1; + nps[1] = -1; + nps[2] = -1; + nps[3] = -1; + } + + nps[4] = -1; + nps[5] = -1; + nps[6] = -1; + nps[7] = -1; + + nps[8] = -1; + nps[9] = -1; + nps[10] = -1; + nps[11] = -1; + + + } + + else if (index % 4 == 2) { + //股价 //printf("startx:%d starty:%d endx:%d endy:%d\n",startx,starty,endx,endy); - //股价 + //往前查找小数点 int m_s = -1, m_e = -1; uchar temp[6]; @@ -249,7 +308,7 @@ } - else if (index % 3 == 2) { + else if (index % 4 == 3) { //手数 nps[0] = startx; nps[1] = starty; @@ -329,9 +388,12 @@ } int maxNumberCount = 6; - if (index % 3 == 2) + if (index % 4 == 3) { maxNumberCount = 5; + } + else if (index % 4 == 1) { + maxNumberCount = 2; } int zeroCount = maxNumberCount - numCount; @@ -383,18 +445,21 @@ } int rowData = num_height * num_width * 10 * num_count; - int rowIndex = index / 3; + int rowIndex = index / 4; int index_0 = rowData * rowIndex; //设置坐标值 int index_2 = 0; - if (index % 3 == 0) { + if (index % 4 == 0) { index_2 += num_width * 10 * i; } - else if (index % 3 == 1) { + else if (index % 4 == 1) { index_2 += (num_width * 10) * (6 + i); } + else if (index % 4 == 2) { + index_2 += (num_width * 10) * (6 + 2 + i); + } else { - index_2 += (num_width * 10) * (6 + 6 + i); + index_2 += (num_width * 10) * (6 + 2 + 6 + i); } for (int re = 0;re < 10;re++) { @@ -538,14 +603,14 @@ emptyColIndex2 = 3; } else if (rowDataSize == 6) { - //第二个元素开始坐标减去第一个元素结束坐标小于20 - if (rowDataIndexs[4 * 1 + 0] - rowDataIndexs[4 * 0 + 2] < 20) { - //有买撤,需要补涨停 - emptyColIndex1 = 3; + //第3个元素的宽度小于第2个元素 + if ((rowDataIndexs[4 * 2 + 2] - rowDataIndexs[4 * 2 + 0]) < (rowDataIndexs[4 * 1 + 2] - rowDataIndexs[4 * 1 + 0])) { + //有涨停,补买撤 + emptyColIndex1 = 1; } else { //无买撤 - emptyColIndex1 = 1; + emptyColIndex1 = 3; } } else { @@ -620,9 +685,61 @@ __global int* result) { int index = get_global_id(0); - int row = index / 2; + int row = index / 3; int baseIndex = row * 4 * 7; - if (index % 2 == 0) { + if (index % 3 == 0) { + //撤销单位识别 + int startx = baseIndex + 1 * 4; + int starty = startx + 1; + int endx = startx + 2; + int endy = startx + 3; + if (rowIndexs[startx] > 0) { + int emptyX = -1; + for (int x = rowIndexs[endx];x >= rowIndexs[startx];x--) + { + bool empty = true; + 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; + break; + } + } + if (empty) { + emptyX = x; + break; + } + } + if (emptyX > 0) { + //计算值 + unsigned char count = 0; + for (int x = emptyX + 1;x <= rowIndexs[endx];x++) + { + 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; + } + } + //printf("row:%d count:%d\n", row, count); + if (abs(count - 12) <= 1) {//S + result[row * 3] = 0; + } + else if (abs(count - 16) <= 1) {//M + result[row * 3] = 1; + } + else if (abs(count - 19) <= 1) {//H + result[row * 3] = 2; + } + + } + } + else { + //默认s + result[row * 3] = 0; + //printf("row:%d count:0\n", row); + } + } + else if (index % 3 == 1) { //涨跌停价 //获取数据坐标 int startx = baseIndex + 3 * 4; @@ -630,7 +747,7 @@ int endx = startx + 2; int endy = startx + 3; if (rowIndexs[startx] <= 0 && rowIndexs[starty] <= 0 && rowIndexs[endx] <= 0 && rowIndexs[endy] <= 0) { - result[row * 2] = 0; + result[row * 3 + 1] = 0; } else { startx = rowIndexs[startx]; @@ -694,11 +811,11 @@ if (topValue > bottomValue) { //涨停 - result[row * 2] = 1; + result[row * 3 + 1] = 1; } else { //跌停 - result[row * 2] = 2; + result[row * 3 + 1] = 2; } } } @@ -721,7 +838,7 @@ { for (int c = startx;c <= endx;c++) { unsigned char val = imgs[get_one_level_position(width, c, r)]; - pixelCount+=get_binary_value(val); + pixelCount += get_binary_value(val); } } @@ -743,7 +860,7 @@ //卖撤 value = 3; } - result[row * 2 + 1] = value; + result[row * 3 + 2] = value; } } \ No newline at end of file -- Gitblit v1.8.0