- 博客(331)
- 资源 (16)
- 收藏
- 关注
原创 00.Jenkins 基本介绍与安装
Jenkins 是一个开源的持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)工具,用于自动化软件开发过程中的构建、测试和部署。它提供了丰富的插件生态系统,可以支持几乎所有主流的开发、构建和部署工具,使得软件开发团队能够更加高效地构建、测试和交付软件。
2024-04-27 07:59:32 1194 1
原创 Android OpenCV(七十七):官方指南方式编译 OpenCV Android SDK.md
众所周知😳, OpenCV 4.9.0 罕见的在 Android 平台上做出调整,具体更新内容请移步。然而,近期笔者在查阅 OpenCV Github Wiki 时,又发现了新东西🤡,一篇名为的 Wiki。以前我们编译 SDK 采用的是CMake方式,具体可参考,而本篇新 Wiki 起草于 2023年11月23日,内容比较新,但是整体还是基于 CMake,只是采用 python 封装脚本方便执行而已,以前应该也可以采用这种方式执行,只是官方一直未正式发布指南。
2024-01-10 20:46:24 1930
原创 Android OpenCV(七十六): OpenCV 4.9.0 更新,终于有一点Android平台的调整了
😂 😂 太感动 ing,OpenCV 4.9.0 版本更新,官方 ChangeLog 里终于出现久违的 Android 平台变更。百年难得一见的变更,我们必须逐条看看。
2024-01-03 19:50:23 1808
原创 Android OpenCV(七十五): 看看刚”转正“的条形码识别
OpenCV 4.8.0 以后,条形码识别转正到主仓库,用法与二维码识别类似,一起看看。
2023-08-20 17:44:43 882
原创 Android OpenCV(七十四): Android OpenCV SDK 升级至 4.8.0
如昨日文章所述,,虽然系列文章已经停更很久,但是版本升级工作笔者是很乐意快速完成的。更新日志:https://github.com/opencv/opencv/wiki/ChangeLog#version480。
2023-08-20 17:40:11 849
原创 有趣的 Kotlin 0x14:Base64编码
Kotlin 来到 1.8.20 版本, 又给开发者带来了很多更新, 今天关注下标准库中新增的Base64相关内容.
2023-04-23 20:47:43 832
原创 有趣的 Kotlin 0x12:Nothing、Any、Unit
作为函数的返回类型,表示函数可以返回任何类型的对象。这在函数需要返回不同类型的对象时非常有用,例如一个工厂函数可以返回不同类型的对象。例如,在一个函数中,如果一个分支中抛出了异常,那么其他分支中的代码就永远不会执行,这时候可以使用。这在需要一个泛型类型参数,但又不关心具体类型的情况下非常有用。在一个类型的泛型参数中,表示这个泛型参数不会被使用,例如一个空的List。是一个特殊的类型,它表示一个函数不会返回任何有用的值。类型的声明,因为Kotlin会自动将没有返回值的函数的返回类型设置为。
2023-04-23 20:45:44 555
原创 Android OpenCV(七十三):吊打高斯模糊的StackBlur Android 实践
OpenCV 4.7.0 2022年12月28日Release,ChangeLog中提到Stackblur是一种高斯模糊的快速近似,由Mario Klingemann发明。其计算耗时不会随着kernel size的增大而增加,专为大kernel size的模糊滤波场景量身定制。使用建议:当kernel size > 9时,强烈建议用stackBlur替换高斯模糊。吊打高斯模糊的StackBlur来了!,已经给出了非常清晰的说明,不再赘述。
2023-03-01 20:03:41 940
原创 有趣的 Kotlin 0x11: joinToString,你真的了解嘛?
之前使用函数也就是用逗号连接集合元素形成字符串,也没有细看它的参数,但是今天和 ChatGPT 聊天时,发现它给我输出了诸多内容。
2023-03-01 20:02:18 815
原创 有趣的 Kotlin 0x10:操作符 ..<
操作符是 Kotlin 在 1.7.20 版本中引入的不包含尾部元素的左闭右开区间操作符。之前我们使用的比较多的操作符可能是。操作符之前,要实现**[0.0,10.0)** 区间,只能使用近似的方法。,两者均表示区间,前者是闭区间,后者则表示不包含末端元素的左闭右开区间。为什么可以实现时间类型的半开半闭区间呢?IDEA 会通过数学符号给出明确的范围提示。可以处理闭区间和左闭右开区间。但是针对浮点型,之前我们只能使用。的左闭右开区间却无法直接实现。操作符处理闭区间,但是对应。,但是依然会有误差。
2023-03-01 20:00:34 542
原创 Android OpenCV(七十二):DNN 人脸识别 FaceRecognizerSF
上一篇文章Android OpenCV(七十一):DNN 人脸检测 FaceDetectorYN,我们提到 OpenCV 4.5.4 版本以后,objdetect包下新增了基于YuNet的人脸检测类,除此之外,还新增了基于 DNN SFace 的人脸识别类——。
2022-11-14 19:45:34 2593 11
原创 Android OpenCV(七十一):DNN 人脸检测 FaceDetectorYN
针对人脸检测,之前我们在Android OpenCV(六十):HAAR 级联分类和Android 平台人脸检测并不复杂两篇文章中分别介绍过OpenCV 级联分类器识别与 libfacedetection 开源库两种方式。并且,OpenCV 人脸检测:级联分类器与YuNet效果对比有更好的检测率和效率可以检测被遮挡的面部以及侧脸更轻量,文件大小更小参数简单易调效率稳定在选用人脸检测模型时,应该首选考虑基于 CNN 的YuNet。
2022-10-22 21:13:36 2409
原创 Android OpenCV(七十):Android DNN 部署深度学习模型
OpenCV 3.3版本以后,OpenCV 加入了对深度神经网络推理运算的支持模块——DNN模块,它支持多种深度学习框架的模型,如Tensorflow、Caffe、Torch、Darknet,以及ONNX格式的模型。
2022-10-03 18:13:28 2108 1
原创 Android OpenCV(六十九):MNIST + KNN + Android 提高手写字识别
前两篇文章中案例均是手写数字识别。使用数据集为下方图片分割而成的 5000 张 20*20 的图片,训练算法分别为 KNN 和 决策树。但是从两篇文章末尾的视频可以看出,识别效果并不是很好,误识别的情况比较多。针对 KNN,尝试修改 K 值大小,识别效果依然无明显改善。在写决策树那篇文章时,发现 http://yann.lecun.com/exdb/mnist/ 网站上的训练图片有 6 万张,于是产生跟换训练集的想法。
2022-09-11 09:40:17 1285
原创 Android OpenCV(六十八):决策树
监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。换言之,利用训练数据集学习一个模型,再用模型对测试样本集进行预测。分类问题(离散)与回归问题(连续)等都是监督学习,如KNN、决策树和随机森林等。非监督学习(unsupervised learning)则是直接对数据进行建模。没有给定事先标记过的训练范例,所用的数据没有属性或标签这一概念。自动对输入的资料进行分类或分群,以寻找数据的模型和规律。聚类算法。
2022-09-08 16:31:02 1420 3
原创 Android OpenCV(六十七):KNN
KNN(K- Nearest Neighbor)法即 K 最邻近法,最初由 Cover 和 Hart 于 1968 年提出,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路非常简单直观:如果一个样本在特征空间中的 K 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类。.如上图,测试样本(绿色圆形)只能被归为第一类的蓝色方形或者第二类的红色三角形。
2022-09-06 12:54:33 1227
原创 有趣的 Kotlin 0x0F:Definitely non-nullable types
绝对不可能为空的类型。Kotlin 本身就有可空和不可空类型,为何又来一个呢?
2022-08-13 14:55:30 735
原创 有趣的 Kotlin 0x0E:DeepRecursiveFunction
T为传入参数类型;R为输出结果类型;block函数体。每一颗语法糖背后,总有几个 Kotlin 的工程师在为我们负重前行。🥸。
2022-08-02 21:23:27 651
原创 Ubuntu 20.04 编译 libfacedetection
环境准备OpenCV 4.5.5参考文章:Ubuntu 安装 OpenCV4.5.5Android NDK r23b网址:https://developer.android.google.cn/ndk/downloads解压并配置环境变量 export ANDROID_NDK=/home/opencv/android/android-ndk(替换成自己的解压目录)libfacedetection 源码网址:https://github.com/ShiqiYu/libfacedete
2022-05-15 14:29:06 703 2
原创 Ubuntu 安装 OpenCV 4.5.5
换源(可选)换个源,加快下载速度。sudo cp /etc/apt/sources.list /etc/apt/sources.list.baksudo gedit /etc/apt/sources.list清华源# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse# deb-s.
2022-05-03 16:26:49 10139 17
原创 Android OpenCV(六十六):边框扩展
前言就难易程度而言,边框扩展这部分内容不应该出现在 KMeans 之后,纯属意外。今天查阅 OpenCV 官方文档时,发现官方竟然单独花了一篇文章讲解这个,而自己只是在Android OpenCV(五十九):盲水印 一节中提到过,所以,我们还是结合官方案例在 Android 平台上实践一下。APIpublic static void copyMakeBorder(Mat src, Mat dst, int top, int bottom, int left, int right, int borde
2022-04-30 16:56:28 3468
原创 Android OpenCV(六十五):K均值
K 均值k 均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法。算法主要分为 4 步:预将数据分为 K 组,并随机选取 K 个对象作为初始的聚类中心;计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心;计算每个聚类的平均值,并将均值作为新的聚类中心;重复步骤 2 和 3 ,直到每个聚类满足终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
2022-04-17 15:17:44 4411
原创 Jetpack Compose(二):TextField
TextField属性按照 Material 设计标准,输入框分为两种:filled text field 和 outlined text field。在 Compose 的世界里,分别对应:TextField 和 OutlinedTextField。@Composablefun TextField( value: TextFieldValue, onValueChange: (TextFieldValue) -> Unit, modifier: Modifier
2022-04-05 19:28:57 1349
原创 Jetpack Compose(一):Text
前言自从去年参加 Android 官方发起了 Jetpack Compose 的推广活动:Jetpack Compose 开发者挑战赛以后,再未系统的学习过 Jetpack Compose 的内容,一晃一年就过去了,官方版本已经更新至稳定版 本1.1.1,Alpha 版本 1.2.0-alpha04。从今天开始,继续自学 Jetpack Compose,就从文本 Text 开始吧,用不用得上再说。Text属性@Composablefun Text( text: String,
2022-04-05 09:14:16 511
原创 Android OpenCV(六十四):图像矩
图像矩矩(英文:moment),亦被称作动差,其概念最初应该来自于物理学,例如我们熟知的力矩。在物理学中,矩用来表示物体形状的物理量,为重要参数指标。定义在实数域上的实函数相对于值 ccc 的 nnn 阶矩为:μn=∫−∞∞(x−c)nf(x)dx\mu_n = \int_{-\infty}^\infty(x-c)^nf(x)dxμn=∫−∞∞(x−c)nf(x)dx如果f(x)f(x)f(x)是概率密度函数,则容易看出相对于值 0 的 1 阶矩是连续随机变量的数学期望。考虑几个特殊场景,方便
2022-03-20 20:13:09 7087
原创 Android OpenCV(六十三):斑点检测
斑点斑点(Blob) ,指图像中连接在一起的一组像素,它们具有一些共同的属性(例如灰度值)。如下图中,暗色连接区域就是斑点。而斑点检测的目标是识别和标记这些区域。API主要涉及两个类:SimpleBlobDetector 和 SimpleBlobDetector_Params。斑点检测器:SimpleBlobDetectorpublic static SimpleBlobDetector create(SimpleBlobDetector_Params parameters)参数一:p
2022-03-13 18:41:29 8369
原创 Android OpenCV(六十二):伪彩色增强
伪彩色增强伪彩色增强是把黑白图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。为什么有时候需要做伪彩色增强?主要原因是人对图像灰度的分辨能力比较低,只能分辨出几十级,而对色彩的辨别能力却非常强,可以分辨出 上千种颜色,为了更有效地提取图形信息,使原图像细节更易辨认,目标更容易识别。原理每一个灰度值都对应颜色空间中的某一种颜色,每个像素的颜色不是由每个基色分量的数值直接决定,而是把像素值当作颜色查找表(color look-up table,CLUT)的
2022-03-05 19:14:09 5393
原创 Retrofit SOAP协议实践
前言作为 Android 开发,平时和后端聊得最多的除了喝酒就是接口。常用语:Restful 和 WebService,前者现在聊得多,后者以前聊得多。默认含义分别为:Restful:HTTP 协议 和 JSON 格式WebService:特指 Soap 协议 和 XML 格式针对基于 HTTP 协议且格式为 JSON 的 Restful 接口,Android 客户端一般采用 Retrofit + Gson/Moshi 的方案解决。而针对 Soap 协议 和 XML 格式的 Soap Web
2022-02-11 08:14:25 250
原创 Android OpenCV(六十一):图像锐化
图像锐化图像锐化,是凸显图像边缘,使图像边缘更加清晰的一种图像处理方式。原理主要就是利用图像的高频分量来实现的,将原图像的高频分量提取出来,再和原图像按一定规则叠加起来,最终得到的图像就是锐化后的图像。主要有两种方式提取高频分量:高通滤波器直接提取原图 - 低通滤波器提取低频 = 高频方式一:高通滤波器使用高通滤波器来提取图像高频分量,如 Sobel 算子、Laplace 算子、梯度 Prewitt 算子等。其中Sobel提取出来的边缘比较粗糙,Laplace 提取出来的边缘更加细腻,因此也更
2022-01-27 20:53:33 4419
原创 Paging 3 分组列表
前言为什么命名为 “Android Jetpack” ?Android JetPack = Android Jet Pack = 安卓喷气发动机组件。再看看下面这个直冲云霄的 Android 机器人,是不是觉得还挺有意思?虽说天天混迹技术社区耳濡目染 Android Jetpack,但是鲜有机会实践。今天就从 Paging3 开始,上手这套组件。Paging3 是 Google 推出的一个应用于Android平台的分页加载库。相较于历史版本,Paging3 功能更丰富、更易用。主要优势如下:
2022-01-23 16:28:15 1867
原创 小手一抖,BUG 就有
前言最近有个 Android 项目重启了,同事无意中将 targetSdkVersion 从 29 升级至 30,引发一个兼容性问题,记录一下。先看看官网 Android 11 行为变更,调整不算太多,开发者比较关注的应该是 强制分区存储 或者 Toast API 内部变更,鲜有人注意到 Package visibility 的行为变更,上述兼容性问题便是由此而生。问题private fun isAppInstalled(pkgName: String): Boolean { val p
2022-01-01 08:50:34 273 6
原创 一招解决 Github 加载慢问题
前言GitHub · Build software better, together.Github 是开发者提高生产力的必备工具,是程序员心目中永远的神。但是 Github 在国内的访问速度很不稳定,时而快如闪电,时而慢如"闪电"。大部分时候,图片都是裂开的。严重影响鄙人拔刀(复制代码)的速度。至于是不是普遍现象,大伙打开百度搜索下 “Github访问”,看看长尾词便知。有条件的朋友可以采用非常科学的上网方式解决问题,像我这样吃馒头都嫌贵的人,自然只能另谋出路。如果你遇到 Github
2021-12-27 19:52:09 4911 2
原创 Android OpenCV(六十):HAAR级联检测器
前言级联分类器级联分类器的概念出自2001年Paul Viola与Michael Jones提出的论文《基于级联分类器的快速对象检测》。其是基于级联分类技术实现对人脸对象的实时快速检测,总结来说级联分类器具有如下几个特征:高拒绝率与低通过率。弱分类器组合级联。实时快速计算。常见的级联分类器大多是基于LBP特征与HAAR特征实现的。基于LBP与HAAR特征针对特定目标训练得到分类器数据,可以保存、加载、有效地进行对象识别。人脸检测就是其中最典型的例子之一。HAAR 特征HAAR小波基函数,
2021-12-12 14:38:38 4067
原创 Kotlin tailrec
前言尾调用一个函数内最后一个动作是调用函数的情形(即这个调用的返回值直接被当前函数返回的情形)fun shape(x: Int): Int { return rect(x)}尾递归尾调用在尾部位置调用函数本身的情形。尾递归属于递归的一种特殊情形。尾调用不一定是递归调用,但是尾递归特别有用,也比较容易实现。fun shape(x: Int): Int { return shape(x-1)}尾递归在普通尾调用的基础上,多出了2个特征:在尾部调用的是函数自身 (Self
2021-12-11 18:43:59 2226 2
原创 大厂文档校正服务,直接拿去用
前言之前在 Android OpenCV 系列文章中,发布过三篇关于图像校正的文章:平面倾斜图像校正Z 轴图像倾斜校正智能裁剪矫正 - SmartCrop其中,只有 智能裁剪矫正 - SmartCrop 具备实用价值。身为一个靠谱的开发人员,针对一个需求怎么可能只储备一个解决方案呢?所以,今天再介绍一个大厂图像校正解决方案,在巨人的肩膀上“接着奏乐接着舞”。目录华为文档校正服务一、简介1.1 服务介绍文档校正服务支持自动识别文档在图片中的位置,能够根据识别到的位置信息
2021-12-05 08:34:17 2819
原创 Activity Result API,顺手
今天打开 Typora 写作时,发现这款陪伴自己多年的工具终于发布了正式版本且以购买序列号的形式落地产品变现,毫无迟疑,第一时间购买序列号支持,付费是对产品和知识的助力,用爱发电很难持续,希望开发这款工具的开发者伴随工具越来越好。前言启动另一个 activity(无论是应用中的 activity 还是其他应用中的 activity)不一定是单向操作。很多场景下,我们启动另一个 activity 是为了接收返回的结果。例如,应用可启动相机应用并接收拍摄的照片作为结果。在过去的很长一段时间里,开发者皆是.
2021-11-28 17:51:07 751
The Linux Command Line中英文合集.zip
2020-07-20
kotlin-in-chinese.pdf
2020-07-16
等保2.0初级.zip
2020-07-13
PowerDesign12以及PDMReader
2018-10-30
RecyclerView Demo
2016-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人