牙叔教程简单易懂
效果展示
KMeans数据分类
KMeans算法的作者是MacQueen,KMeans的算法是对数据进行分类的算法,采用的硬分类方式,是属于非监督学习的算法;
对于给定的样本集,按照样本之间的距离大小,将样本划分为K个簇,让簇内的点尽量紧密的连接在一起,而让簇间的距离尽量的大。
参数控制
聚类的颜色数量,第一张图片是3个颜色,其他是10个颜色
技能点
全屏
在autojs中使用kmeans
选择文件
绘制色卡
list的使用
浏览和保存mat
颜色rgb三通道分离
toolbar修改左上角图标及其颜色
环境
手机:Mi11Pro
Android版本:12
Autojs版本:9.1.6
代码讲解
1.色卡是一个View
Viewid="colorCard"marginTop="10"h="40dp"visibility="gone"bg="#ff"/View
颜色聚类,获取到数据以后,绘制色卡用下面的方法
functiondrawColor(view,dataList){vardrawable=newandroid.graphics.drawable.Drawable({draw:function(canvas){varlen=dataList.length;letviewWidth=view.getWidth();letviewHeight=view.getHeight();letlastX=0;letpaint=newandroid.graphics.Paint();for(vari=0;ilen;i++){letcolor=dataList[i].color;letpercent=dataList[i].percent;letx=lastX;lety=0;letwidth=viewWidth*percent;letheight=viewHeight;lastX=x+width;letrect=newandroid.graphics.Rect(x,y,x+width,y+height);paint.setColor(colors.parseColor(color));canvas.drawRect(rect,paint);}},});view.setBackgroundDrawable(drawable);}
2.颜色列表
listid="list"marginTop="10" horizontalgravity="center"w="*"marginTop="16" cardcardCornerRadius="15"w="30"h="30"marginRight="60"bg="#ff00ff" Viewid="colorDisplayArea"bg="{{this.color}}" /View /card textid="colorValue"w="dp"marginRight="60"text="{{this.color}}"size="20sp"textColor="#00" /text textid="colorRatio"w="60dp"text="{{this.percent}}"size="20sp"textColor="#00" /text /horizontal/list
美观一点,我们把View呈现为圆形,再显示颜色数值,和颜色的比例
3.选择文件
ui.logo.click(function(){intent=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);activity.startActivityForResult(intent,imgRequestCode);});
选择文件之前,要设置文件选择监听,然后获取到文件路径
4.监听文件选择结果
activity.getEventEmitter().on("activity_result",(requestCode,resultCode,data)={if(requestCode==imgRequestCode){if(resultCode==activity.RESULT_OK){leturi=data.getData();letpath=uri.getPath();path=decodeURIComponent(path);}}});
5,模块调试
if(typeofmodule==="object"){module.exports=getColorData;}else{letimgPath="./small91.png";getColorData(imgPath);}
有时候要单独调试模块,不想频繁的切换注释module.exports,就可以通过判断module是不是object,
如果是就说明是当模块来使用,如果不是就说明在调试模块,
这样就不用一直切换module.exports的注释了
6.图片类型
Imgproc.cvtColor(mat,mat2,Imgproc.COLOR_BGRA2RGBA);
保存图片之前,需要转换图片的颜色类型,因为opencv是bgr格式的图片,autojs是rgb格式的图片
名人名言
思路是最重要的,其他的百度,bing,stackoverflow,github,安卓文档,autojs文档,最后才是群里问问---牙叔教程
声明
部分内容来自网络本教程仅用于学习,禁止用于其他用途