⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isolate.c

📁 NIST Handwriting OCR Testbed
💻 C
字号:
/*# proc: iso_1line_field - isolates and crops a field containing one line of# proc:                   text given spatial template coordinates for the# proc:                   field.# proc: iso_nline_field - isolates and crops a field containing more than one# proc:                   line of text given spatial template coordinates for# proc:                   the field.*/#include <stdio.h>/*******************************************************************/iso_1line_field(field, par_x, par_y, fw, fh, idata, iw, ih, x1, y1, x2, y2)unsigned char **field, *idata;int *par_x, *par_y, *fw, *fh;int iw, ih, x1, y1, x2, y2;{   int bfw, bfh;   unsigned char *bigfield, *cut_exact_image();   int *bins, blen;   int start;   int ty_i, ty_val, by_i, by_val;   int lx_i, lx_val, rx_i, rx_val;   int *rlist, *binarize();   int m_i, m_val;   if((iw == 0) || (ih == 0)){      *par_x = 0;      *par_y = 0;      *fw = 0;      *fh = 0;      return;   }   bfw =  x2 - x1 + 1;   bfh =  y2 - y1 + 1;   bigfield = cut_exact_image(idata, iw, ih, x1, y1, &bfw, bfh);   compute_x_hist(bigfield, bfw, bfh, &bins, &blen);   ramp_int_runs(bins, &rlist, blen, 2);   find_first_max_forward(rlist, 0, blen, &m_i, &m_val);   free(rlist);   start = m_i - (m_val>>1);   find_first_min_backward(bins, start, 0, &ty_i, &ty_val);   find_first_min_forward(bins, start, blen, &by_i, &by_val);   free(bins);   compute_y_hist(bigfield, bfw, bfh, &bins, &blen);   find_first_thresh_forward(bins, 0, blen, 10, &lx_i, &lx_val);   find_first_min_backward(bins, lx_i, 0, &lx_i, &lx_val);   find_first_thresh_backward(bins, 0, blen, 10, &rx_i, &rx_val);   find_first_min_forward(bins, rx_i, blen, &rx_i, &rx_val);   free(bins);   *fw = rx_i - lx_i;   *fh = by_i - ty_i;   lx_i++;   ty_i++;   (*field) = cut_exact_image(bigfield, bfw, bfh, lx_i, ty_i, fw, *fh);   free(bigfield);   *par_x = x1 + lx_i;   *par_y = y1 + ty_i;}/*******************************************************************/iso_nline_field(field, par_x, par_y, fw, fh, idata, iw, ih, x1, y1, x2, y2)unsigned char **field, *idata;int *par_x, *par_y, *fw, *fh;int iw, ih, x1, y1, x2, y2;{   int bfw, bfh;   unsigned char *bigfield, *cut_exact_image();   int *bins, blen;   int ty_i, ty_val, by_i, by_val;   int lx_i, lx_val, rx_i, rx_val;   if((iw == 0) || (ih == 0)){      *par_x = 0;      *par_y = 0;      *fw = 0;      *fh = 0;      return;   }   bfw =  x2 - x1 + 1;   bfh =  y2 - y1 + 1;   bigfield = cut_exact_image(idata, iw, ih, x1, y1, &bfw, bfh);   compute_x_hist(bigfield, bfw, bfh, &bins, &blen);   find_first_thresh_forward(bins, 0, blen, 10, &ty_i, &ty_val);   find_first_min_backward(bins, ty_i, 0, &ty_i, &ty_val);   find_first_thresh_backward(bins, 0, blen, 10, &by_i, &by_val);   find_first_min_forward(bins, by_i, blen, &by_i, &by_val);   free(bins);   compute_y_hist(bigfield, bfw, bfh, &bins, &blen);   find_first_thresh_forward(bins, 0, blen, 10, &lx_i, &lx_val);   find_first_min_backward(bins, lx_i, 0, &lx_i, &lx_val);   find_first_thresh_backward(bins, 0, blen, 10, &rx_i, &rx_val);   find_first_min_forward(bins, rx_i, blen, &rx_i, &rx_val);   free(bins);   *fw = rx_i - lx_i;   *fh = by_i - ty_i;   lx_i++;   ty_i++;   (*field) = cut_exact_image(bigfield, bfw, bfh, lx_i, ty_i, fw, *fh);   free(bigfield);   *par_x = x1 + lx_i;   *par_y = y1 + ty_i;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -