AndroidKt
分享 Android、Kotlin、Flutter 以及 OpenCV 等移动开发知识。
展开
-
Android OpenCV(七十五): 看看刚”转正“的条形码识别
OpenCV 4.8.0 以后,条形码识别转正到主仓库,用法与二维码识别类似,一起看看。原创 2023-08-20 17:44:43 · 947 阅读 · 0 评论 -
Android OpenCV(七十四): Android OpenCV SDK 升级至 4.8.0
如昨日文章所述,,虽然系列文章已经停更很久,但是版本升级工作笔者是很乐意快速完成的。更新日志:https://github.com/opencv/opencv/wiki/ChangeLog#version480。原创 2023-08-20 17:40:11 · 952 阅读 · 0 评论 -
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 · 998 阅读 · 0 评论 -
Android OpenCV(七十二):DNN 人脸识别 FaceRecognizerSF
上一篇文章Android OpenCV(七十一):DNN 人脸检测 FaceDetectorYN,我们提到 OpenCV 4.5.4 版本以后,objdetect包下新增了基于YuNet的人脸检测类,除此之外,还新增了基于 DNN SFace 的人脸识别类——。原创 2022-11-14 19:45:34 · 2758 阅读 · 11 评论 -
Android OpenCV(七十一):DNN 人脸检测 FaceDetectorYN
针对人脸检测,之前我们在Android OpenCV(六十):HAAR 级联分类和Android 平台人脸检测并不复杂两篇文章中分别介绍过OpenCV 级联分类器识别与 libfacedetection 开源库两种方式。并且,OpenCV 人脸检测:级联分类器与YuNet效果对比有更好的检测率和效率可以检测被遮挡的面部以及侧脸更轻量,文件大小更小参数简单易调效率稳定在选用人脸检测模型时,应该首选考虑基于 CNN 的YuNet。原创 2022-10-22 21:13:36 · 2498 阅读 · 0 评论 -
Android OpenCV(七十):Android DNN 部署深度学习模型
OpenCV 3.3版本以后,OpenCV 加入了对深度神经网络推理运算的支持模块——DNN模块,它支持多种深度学习框架的模型,如Tensorflow、Caffe、Torch、Darknet,以及ONNX格式的模型。原创 2022-10-03 18:13:28 · 2187 阅读 · 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 · 1330 阅读 · 0 评论 -
Android OpenCV(六十八):决策树
监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。换言之,利用训练数据集学习一个模型,再用模型对测试样本集进行预测。分类问题(离散)与回归问题(连续)等都是监督学习,如KNN、决策树和随机森林等。非监督学习(unsupervised learning)则是直接对数据进行建模。没有给定事先标记过的训练范例,所用的数据没有属性或标签这一概念。自动对输入的资料进行分类或分群,以寻找数据的模型和规律。聚类算法。原创 2022-09-08 16:31:02 · 1465 阅读 · 3 评论 -
Android OpenCV(六十七):KNN
KNN(K- Nearest Neighbor)法即 K 最邻近法,最初由 Cover 和 Hart 于 1968 年提出,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路非常简单直观:如果一个样本在特征空间中的 K 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类。.如上图,测试样本(绿色圆形)只能被归为第一类的蓝色方形或者第二类的红色三角形。原创 2022-09-06 12:54:33 · 1270 阅读 · 0 评论 -
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 · 3544 阅读 · 0 评论 -
Android OpenCV(六十五):K均值
K 均值k 均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法。算法主要分为 4 步:预将数据分为 K 组,并随机选取 K 个对象作为初始的聚类中心;计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心;计算每个聚类的平均值,并将均值作为新的聚类中心;重复步骤 2 和 3 ,直到每个聚类满足终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。原创 2022-04-17 15:17:44 · 4424 阅读 · 0 评论 -
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 · 7094 阅读 · 0 评论 -
Android OpenCV(六十三):斑点检测
斑点斑点(Blob) ,指图像中连接在一起的一组像素,它们具有一些共同的属性(例如灰度值)。如下图中,暗色连接区域就是斑点。而斑点检测的目标是识别和标记这些区域。API主要涉及两个类:SimpleBlobDetector 和 SimpleBlobDetector_Params。斑点检测器:SimpleBlobDetectorpublic static SimpleBlobDetector create(SimpleBlobDetector_Params parameters)参数一:p原创 2022-03-13 18:41:29 · 8419 阅读 · 0 评论 -
Android OpenCV(六十二):伪彩色增强
伪彩色增强伪彩色增强是把黑白图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。为什么有时候需要做伪彩色增强?主要原因是人对图像灰度的分辨能力比较低,只能分辨出几十级,而对色彩的辨别能力却非常强,可以分辨出 上千种颜色,为了更有效地提取图形信息,使原图像细节更易辨认,目标更容易识别。原理每一个灰度值都对应颜色空间中的某一种颜色,每个像素的颜色不是由每个基色分量的数值直接决定,而是把像素值当作颜色查找表(color look-up table,CLUT)的原创 2022-03-05 19:14:09 · 5437 阅读 · 0 评论 -
Android OpenCV(六十一):图像锐化
图像锐化图像锐化,是凸显图像边缘,使图像边缘更加清晰的一种图像处理方式。原理主要就是利用图像的高频分量来实现的,将原图像的高频分量提取出来,再和原图像按一定规则叠加起来,最终得到的图像就是锐化后的图像。主要有两种方式提取高频分量:高通滤波器直接提取原图 - 低通滤波器提取低频 = 高频方式一:高通滤波器使用高通滤波器来提取图像高频分量,如 Sobel 算子、Laplace 算子、梯度 Prewitt 算子等。其中Sobel提取出来的边缘比较粗糙,Laplace 提取出来的边缘更加细腻,因此也更原创 2022-01-27 20:53:33 · 4481 阅读 · 0 评论 -
Android OpenCV(六十):HAAR级联检测器
前言级联分类器级联分类器的概念出自2001年Paul Viola与Michael Jones提出的论文《基于级联分类器的快速对象检测》。其是基于级联分类技术实现对人脸对象的实时快速检测,总结来说级联分类器具有如下几个特征:高拒绝率与低通过率。弱分类器组合级联。实时快速计算。常见的级联分类器大多是基于LBP特征与HAAR特征实现的。基于LBP与HAAR特征针对特定目标训练得到分类器数据,可以保存、加载、有效地进行对象识别。人脸检测就是其中最典型的例子之一。HAAR 特征HAAR小波基函数,原创 2021-12-12 14:38:38 · 4109 阅读 · 0 评论 -
大厂文档校正服务,直接拿去用
前言之前在 Android OpenCV 系列文章中,发布过三篇关于图像校正的文章:平面倾斜图像校正Z 轴图像倾斜校正智能裁剪矫正 - SmartCrop其中,只有 智能裁剪矫正 - SmartCrop 具备实用价值。身为一个靠谱的开发人员,针对一个需求怎么可能只储备一个解决方案呢?所以,今天再介绍一个大厂图像校正解决方案,在巨人的肩膀上“接着奏乐接着舞”。目录华为文档校正服务一、简介1.1 服务介绍文档校正服务支持自动识别文档在图片中的位置,能够根据识别到的位置信息原创 2021-12-05 08:34:17 · 2846 阅读 · 0 评论 -
Android 平台人脸检测并不复杂
一、前言上周,我们将于老师分享给开发者的 libfacedetection 开源库在 Windows 11 CLion 环境下实践了一把,速度快,效果好。恰逢今日不加班,秉承着实践出真知的原则移植至 Android 平台。二、环境准备Android Studio 2020.3.1OpenCV 4.5.4CMake 3.10.2libfacedetection 源码(https://github.com/ShiqiYu/libfacedetection)三、工程实践实原创 2021-11-04 21:29:40 · 4247 阅读 · 3 评论 -
Android OpenCV(五十八):SURF特征点检测
SURF 特征点SUFR (Speed Up Robust Fetures) ,是对 SIFT 算法的一种改进。SIFT (Scale-invariant Feature Transform) 即尺度不变特征变换,具有较好的稳定性和不变性,能够适应旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰,是一种**局部特征描述子,**但是计算速度较慢,SURF 算法就是为了满足实时系统中对速度的要求而产生的。关于 SIFT 算法和 SURF 算法具体过程请查阅以下文章:SIFT 算原创 2021-08-29 20:22:22 · 502 阅读 · 0 评论 -
Android OpenCV (五十九):离散傅里叶变换
离散傅里叶变换对一张图像使用傅立叶变换就是将它分解成正弦和余弦两部分,也就是将图像从空间域(spatial domain)转换到频域(frequency domain)。 这一转换的理论基础来自于以下事实:任一函数都可以表示成无数个正弦和余弦函数的和的形式。灰度图像是一个二维数组,且为离散状态。所以图像傅里叶变换,实际上就是二维数组的傅里叶变换。图像的频率是指图像灰度变换的强烈程度,将二维图像由空间域变为频域后,图像上的每个点的值都变成了复数,也就是所谓的复频域,通过复数的实部和虚部,可以计算出幅值和相原创 2021-08-29 20:23:24 · 532 阅读 · 0 评论 -
CameraX 下使用 OpenCV 微信二维码识别
前言前面,我们已经介绍了两种集成 wechat_qrcode 微信二维码识别能力的做法:完整编译 OpenCV 和 OpenCV ContribNative C++ 单独集成 wechat_qrcode 模块这两种方式的预览和识别均是基于 OpenCV 提供的 JavaCamera2View。今天介绍一下如何通过 CameraX 框架调用 wechat_qrcode 模块能力。CameraX 基本使用CameraX 具有以下最低版本要求:Android API 级别 21Androi原创 2021-06-08 21:40:59 · 1001 阅读 · 6 评论 -
SmartCrop 智能裁剪矫正
前言从前面两篇文章,我们了解到图像倾斜的两种类型:平面倾斜和 Z 轴倾斜,也结合之前学习的 API 完成了理想图片的矫正工作。但是基于理想图片的图像倾斜矫正在实际开发过程中的作用并不大。笔者能力有限,目前无法帮助大家实现矫正能力强且好用的 Android 应用。但是,我们可以站在巨人的肩膀上去实现我们的目标。SmartCropSmartCrop,是一款简单易用的智能图片裁剪库,适用于身份证,名片,文档等照片的裁剪。它是笔者在 Github 上遨游时,无意中发现的,正好弥补一下前两篇文章实用化效果不强的原创 2021-06-06 08:21:23 · 1315 阅读 · 7 评论 -
Z 轴倾斜矫正
图像倾斜一般图像倾斜有两种情况:平面倾斜:拍照设备与拍照对象平行,拍出来的图像只需要进行旋转即可完成矫正。Z 轴倾斜:拍照设备与拍照对象不平行,拍出来的图像要先进行透视变换,然后再进行旋转等操作才可以完成矫正。上一篇文章我们采用理想化图片尝试了平面倾斜的矫正,今天我们继续用理想化图片尝试Z轴倾斜矫正。核心内容就是透视变换,Android OpenCV 系列中有有一篇关于透视变换的文章,当时我们是直接手动标点,然后生成透视矩阵完成透视变换。针对 Z 轴倾斜矫正,也是可以通过人为干预标原创 2021-06-03 18:55:09 · 1866 阅读 · 7 评论 -
Android OpenCV(五十七):ORB特征点FLANN匹配
前言Android OpenCV 系列的上一篇文章中,我们学习了 ORB 特征点的暴力匹配方式。复习一下,暴力匹配法会针对查询描述子中的每个描述符在训练描述子中寻找匹配描述子,算法复杂度是 O(n2n^2n2) 级别的,随着特征点数量的增加,运行速度会受到明显的影响。所以,我们今天介绍另外一种匹配方法—— (近似)最近邻快速搜索库(Fast Library for Approximate Nearest Neighbors,FLANN)。它是一个对大数据集和高维特征进行最近邻搜索的算法的集合,而且这些算法原创 2021-05-29 17:46:08 · 1349 阅读 · 6 评论 -
平面倾斜图像矫正
前言Android OpenCV 系列文章每一篇只针对一个单独的知识点进行自学和输出,随着我们基础知识的积累,自然会考虑由易到难的实现一些综合应用场景,给枯燥的基础 API 和算法学习增添一些趣味,形成正向反馈,提高学习兴趣,激发学习热情。就如同之前自学 Android 一样,绘制干净界面,实现绚丽动画,了解系统原理都会刺激求知欲,助你持续学习,持续输出。图像倾斜一般图像倾斜有两种情况:平面倾斜:拍照设备与拍照对象平行,拍出来的图像只需要进行旋转即可完成矫正;Z 轴倾斜:拍照设备与拍照对原创 2021-05-27 19:16:31 · 3126 阅读 · 12 评论 -
还在用 ZXing ? 试试华为统一扫码服务吧!
Android 项目开发过程中,扫码场景使用最多的开源库是 ZXing ,Github 上针对 ZXing 的优化和二次封装不胜枚举,但是 Zxing 的缺陷在于只是实现了扫码的一些基础操作,对于更为复杂的扫码环境比如强光,弯曲,形变等情况,并不能很好地支持。现在主流的做法是基于Zxing 的源码做部分优化,但是效果依然不算理想,同时还会花费很多人力。今天,我们就介绍下 ZXing 的完美替代品 —— 华为统一扫码服务( Scan Kit )。关于 ZXing 和 Scan Kit 的对比,论坛内有一篇.原创 2021-05-26 21:52:48 · 2228 阅读 · 12 评论 -
还不知道 YUV 是什么?科普一下
YUVYUV,是一种颜色编码方法。“Y” 表示明亮度(Luminance、Luma),“U” 和 “V” 则是色度、浓度(Chrominance、Chroma)。Y’UV、YUV、YCbCr、YPbPr 几个概念其实是一回事儿。由于历史关系,Y’UV、YUV 主要是用在彩色电视中,用于模拟信号,YCbCr 用于数字视频、图像的压缩和传输,如 MPEG、JPEG。Y’UV 设计的初衷是为了使彩色电视能够兼容黑白电视。对于黑白电视信号,没有色度信息也就是(UV),那么在彩色电视显示的时候指显示亮度信息。将一张原创 2021-05-26 20:57:44 · 6277 阅读 · 7 评论 -
Android OpenCV(五十六):ORB特征点暴力匹配
特征点匹配特征点,表示图像内具有显著特征的像素点。采用不同的特征点检测算法,得到的特征点也不同,除了我们前面介绍的ORB特征点检测方法,还有SIFT、SURF等特征点算法可以用于特征点检测。虽然算法不同,但是在OpenCV API层面的操作方式基本相同。通过在不同的图像上使用同一种特征点检测算法,获取各自的特征点并进行匹配,可以帮助我们快速寻找不同图像之间的信息关联。那么如何匹配呢?前面我们介绍过,每个特征点都有标志其唯一身份和特点的描述子,那么我们就可以通过在两个图像中寻找相似描述子来间接的匹配特征点。原创 2021-05-15 22:14:30 · 703 阅读 · 1 评论 -
Android OpenCV(五十五):ORB特征点检测
概念特征点特征点和角点都是图像中具有局部特征的点,但是特征点具有唯一描述像素点特征的描述子。特征点由关键点和描述子组成,例如ORB特征点,我们需要先使用FAST算法求取关键点,然后再计算BRIEF描述子,从而形成ORB特征点。所谓关键点,字面理解为图像内关键像素点,OpenCV中对应的类型为KeyPoint,里面包含像素点的坐标、直径、方向、强度等有用的信息;而描述子(descriptor),是用来唯一描述关键点的一串数字,通过描述子可以区分两个不同的关键点,也可以用来匹配相同的关键点,所以选择合适的方原创 2021-05-15 22:13:04 · 584 阅读 · 3 评论 -
Android OpenCV(五十四):亚像素级别角点检测
前面我们介绍的两种角点检测方法Harris角点检测和Shi-Timasi角点检测的精度都是像素级别。但是在跟踪、三维重建,相机校正等应用上我们都需要精确的角点位置坐标,即亚像素级别。原理OpenCV亚像素角点检测方法是从亚像素角点到周围像素点的矢量应垂直于图像的灰度梯度这个观察事实得到的,通过最小化误差函数的迭代方法来获得亚像素级精度的坐标值。图中:qqq,即待求的亚像素点;pip_ipi,即qqq周围的点(pi−q)(p_i-q)(pi−q),第一个向量pip_ipi处的梯度GiG原创 2021-05-15 22:11:25 · 498 阅读 · 1 评论 -
全网首发微信二维码引擎Android平台移植
2011年12月微信3.5版本正式上线“扫一扫”二维码,历经9年蜕变,“扫一扫”从二维码名片到扫码支付、从小程序码到健康码,二维码已经成为一种生活方式,连接着数字与现实。现在,在腾讯WeChatCV团队的贡献下,微信扫码引擎正式加入OpenCV开源了!号称只需要三行代码,你便轻松拥有微信的扫码能力。我只想说,真的没那么容易,我花了半天才完成微信二维码扫描引擎在Android平台上的基础实践。前言 全网首发微信二维码引擎An原创 2021-02-04 21:54:51 · 1964 阅读 · 9 评论 -
Android OpenCV 摄像头实时预览
Android摄像头预览Android OpenCV开发过程中,我们有3种可选方式去实现Android摄像头预览功能:使用Android系统Camera API使用CameraX(JetPack组件)使用OpenCV SDK辅助类(JavaCameraView、JavaCamera2View等)当然,有人可能会有疑问?后面两种方式不也是使用Android系统的Camera APi嘛。你说的很有道理,只是CameraX为我们处理了很多麻烦的问题,如设备管理,生命周期管理等逻辑,让开发者更专注于生原创 2021-01-28 21:21:21 · 3734 阅读 · 6 评论 -
Android OpenCV(五十三):Shi-Tomasi角点检测
Shi-Tomasi角点检测在Harris角点检测中,Harris角点评价系数R表示为:R=det(M)−k(trace(M))2R=det(M)-k(trace(M))^2R=det(M)−k(trace(M))2det(M)=λ1λ2det(M)=λ_1λ_2det(M)=λ1λ2trace(M)=λ1+λ2trace(M)=λ_1+λ_2trace(M)=λ1+λ2其中det(M)=λ1λ2是矩阵的行列式,trace(M)=λ1+λ2是矩阵的迹其中det(M)=λ_1原创 2021-01-09 17:40:56 · 502 阅读 · 0 评论 -
Android OpenCV(五十二):Harris角点检测
什么是角点?角点就是极值点,即在某方面属性特别突出的点。当然,你可以自己定义角点的属性(设置特定熵值进行角点检测)。角点可以是两条线的交叉处,也可以是位于相邻的两个主要方向不同的事物上的点。角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。常见的角点有:灰度梯度的最大值对应的像素点;两条直线或者曲线的交点;一阶梯度的导数最大值和梯度方向变化率最大的像素点;一阶导数最大,二阶导数为零的像素点(指示物体边缘变化不连续的方向)。为什么要检测角点?角点是图像原创 2021-01-01 13:40:56 · 813 阅读 · 2 评论 -
Android OpenCV(五十一):图像插值
图像插值何为插值?插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。何为图像插值?从低分辨率图像生成高分辨率图像的过程(放大),用以恢复图像中所丢失的信息。APIpublic static void resize(Mat src, Mat dst, Size dsize, double fx, double fy, int interpolation) 参数一:src,输入源图像。参数二:dst,输出目标图像。参数三:原创 2020-12-28 19:45:39 · 769 阅读 · 0 评论 -
Android OpenCV(五十):图像翻转
图像翻转图像翻转图像翻转操作,就是将图像二维数组沿水平轴,垂直轴或者两个轴进行翻转操作。dstij={srcsrc.rows−i−1,jif flipCode=0srci,src.cols−j−1if flipCode>0srcsrc.rows−i−1,src.cols−j−1if flipCode<0\texttt{dst} _{ij} = \left\{ \begin{array}{l l} \texttt{src} _{\texttt{src.rows}-i-1,j} &am原创 2020-12-24 20:33:22 · 602 阅读 · 1 评论 -
Android OpenCV(四十九):图像积分图
图像积分图积分图像是Crow在1984年首次提出,是为了在多尺度透视投影中提高渲染速度,是一种快速计算图像区域和与平方和的算法。其核心思想是对每个图像建立自己的积分图查找表,在图像积分处理计算阶段根据预先建立的积分图查找表,直接查找从而实现对均值卷积线性时间计算,做到了卷积执行的时间与半径窗口大小的无关联。图像积分图在图像特征提取HAAR/SURF、二值图像分析、图像相似相关性NCC计算、图像卷积快速计算等方面均有应用,是图像处理中的经典算法之一。原理积分图像采用不同的计算规则获取不同的积分图像:s原创 2020-12-20 11:18:04 · 370 阅读 · 1 评论 -
Android OpenCV(四十八):Poisson图像编辑
泊松图像编辑图像合成是图形处理的一个基本问题,其通过将源图像中一个物体或者一个区域嵌入到目标图像生成一个新的图像。在对图像进行合成的过程中,为了使合成后的图像更自然,合成边界应保持无缝。但如果原图像和目标图像有着明显不同的纹理特征,则直接合成后的图像会存在明显的边界。针对此问题,Prez等提出了一种利用构造Poisson方程求解像素最优值的方法,在保留了源图像梯度信息的同时,可以很好地融合源图像与目标图像的背景。该方法根据用户指定的边界条件求解一个Poisson方程,实现了梯度上的连续,从而达到边界处的无原创 2020-12-13 20:09:56 · 711 阅读 · 0 评论 -
Android OpenCV(四十七):脱色
脱色脱色是将彩色图像转换为灰度图像的过程。同时,它也是数字打印,风格化的黑白照片渲染以及许多单通道图像处理应用程序中的基本工具。Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)可以快速的实现图片脱色,其通过简单的计算将三通道图像转换成单通道图像,经典的灰度转换公式如下:GRAY=0.299∗R+0.587∗G+0.114∗BGRAY=0.299*R+0.587*G+0.114*BGRAY=0.299∗R+0.587∗G+0.114∗B但是转换过原创 2020-12-06 21:03:55 · 302 阅读 · 0 评论 -
AndroidOpenCV(四十六):非真实渲染
非真实渲染非真实感渲染(Non Photorealistic Rendering,简称NPR),是指利用计算机模拟各种视觉艺术的绘制风格,也用于发展新的绘制风格。比如模拟中国画、水彩、素描、油画、版画等艺术风格。NPR也可以把三维场景渲染出丰富的、特别的新视觉效果,使它具备创新的功能。NPR渲染以强烈的艺术形式应用在动画、游戏等娱乐领域中,也出现在工程、工业设计图纸中。广阔的应用领域,不仅是由于它的艺术表现形式丰富多样,还在于计算机能够辅助完成原本工作量大、难度高的创作工作。目前,基于三维软件的NPR原创 2020-12-03 19:40:19 · 591 阅读 · 1 评论