|
原理:如果一个像素点周围有3个连贯的像素点,就认为是需要识别的像素,否则当背景处理。只适用于特定环境。
- scanImageA = function(img){
- // 保存原始高宽
- var w = img.getWidth();
- var h = img.getHeight();
- // 二值化
- img.bpp(1);
- img.bpp(24);
-
- // 要删除的点
- var dels = {};
-
- //首先计算出各点的颜色值,避免在循环递归中重复的取
- var tcl={};
- for(i=0;w;1){
- tcl[ i ]={};
- for(j=0;h;1){
- tcl[i][j]=img.getPixel(i,j);
- }
- }
-
- // 去周边颜色值个数小于3的
- for(i=1;w-1;1){
- for(j=1;h-1;1){
- // 周围黑点个数
- var size = 0;
- // 连贯标记
- var lines = 0;
- if(tcl[i][j]==0) {
- if(tcl[i-1][j-1]==0) {
- size ++;
- lines += 1;
- }
- if(tcl[i-1][j]==0) {
- size ++;
- lines += 2;
- }
- if(tcl[i-1][j+1]==0) {
- size ++;
- lines += 4;
- }
- if(tcl[i][j-1]==0) {
- size ++;
- lines += 128;
- }
- if(tcl[i][j+1]==0) {
- size ++;
- lines += 8;
- }
- if(tcl[i+1][j-1]==0) {
- size ++;
- lines += 64;
- }
- if(tcl[i+1][j]==0) {
- size ++;
- lines += 32;
- }
- if(tcl[i+1][j+1]==0) {
- size ++;
- lines += 16;
- }
- };
- // 背包算法特性取连贯点 lines = 7 or lines = 14 or lines = 28 or lines = 56 or lines = 112 or lines=224 or lines = 193 or lines = 131
- if(size<=3 and lines != 7 and lines != 14 and lines != 28 and lines != 56 and lines != 112 and lines != 224 and lines != 193 and lines != 131){
- // 记录要删除的点
- table.insert(dels,{i;j});
- }
- }
- }
- for(i=1;#dels;1){
- // 设置成白色
- img.setPixel(dels[i][1],dels[i][2],16777215);
- }
- }
- import inet.http;
- import soImage;
- var img = soImage();
- img.setBytes(inet.http().get("https://123.125.98.209/image?mode=validate&width=60&height=20") ,"*.jpg");
- var w,h = img.getWidth(),img.getHeight();
- scanImageA(img);
- // 去白边
- img.crop(1,1,w-1,h-1);
- img.paint(); //在屏幕上显示处理后的图像
复制代码 |
评分
-
查看全部评分
|