牙叔教程简单易懂
群里有人问思路提取书本中间的线-切开
提取书本中间的线Canny边缘检测
Imgproc.Canny(grayMat,cannyMat,lowThreshold,lowThreshold*ratio,kernel_size,false);霍夫变换直线检测
functiongetHoughLinesP(mat,size){letlines=newMat();letthreshold=size/5;//阈值,只有获得足够交点的极坐标点才被看成是直线letminLineSize=size;//最小直线长度,有默认值0,表示最低线段的长度,比这个设定参数短的线段就不能被显现出来。letlineGap=size;//最大间隔,有默认值0,允许将同一行点与点之间连接起来的最大的距离。Imgproc.HoughLinesP(mat,lines,1,Math.PI/,threshold,minLineSize,lineGap);returnlines;}过滤直线
直线的横坐标应该在图片中间
functionfilterLineDataList(lines){//{angle:90,distance:,x1:4,y1:,x2:4,y2:},letnewLines=[];varlen=lines.length;letcenterX=img.width/2;for(vari=0;ilen;i++){letline=lines[i];if(Math.abs(line.x1-centerX)img.width/4Math.abs(line.x2-centerX)img.width/4){newLines.push(line);}}returnnewLines;}计算切割点
计算直线和上下两边的交点
functiongetFocusCoordinatesOfTwoLines(line1,line2){varx1=line1.x1;vary1=line1.y1;varx2=line1.x2;vary2=line1.y2;varx3=line2.x1;vary3=line2.y1;varx4=line2.x2;vary4=line2.y2;varx=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4))/((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));vary=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4))/((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));return{x:x,y:y};}分割图片
letclipImg=images.clip(img,0,0,leftPageTopSideLength,img.height);pts.add(newMatOfPoint(topLeftPoint,topRightPoint,bottomRightPoint,bottomLeftPoint,topLeftPoint));Imgproc.fillPoly(polyMat,pts,Scalar(),1);Core.bitwise_and(clipImg.mat,newPolyMat,newMat);
测试环境手机:Mi11ProAndroid版本:12Autojs版本:9.1.10
名人名言
思路是最重要的,其他的百度,bing,stackoverflow,github,安卓文档,autojs文档,最后才是群里问问---牙叔教程声明
部分内容来自网络本教程仅用于学习,禁止用于其他用途