
Android
一航jason
主要从事大前端架构方向。
-
原创 Android 使用JS注入获取网页视频链接
Android 使用JS注入获取网页视频链接思路:1、通过js注入获取整个网页html。2、通过jsoup分析获取video播放器的数据源。一、开启webviewjs功能,注入js回调mWebView.addJavascriptInterface(new LocalAndroidObj(), "local_android_obj");// js 注入回调二、通过jsoup 分析网页,使用方法类似jQuery语法。 private class LocalAndroidObj{2021-02-24 09:37:21136
1
-
原创 android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议
最近做了一个支持onvif标准的摄像头管理程序,主要就是在局域网中通过程序控制摄像头获取摄像头视频流分发给广域网中的客户端设备;这里面用了onvif协议相关知识和ffmpeg视频流处理的相关知识。onvif相关的以后有机会再分享,今天主要是把android ffmpeg相关的东西分享一下。视频播放流程:解封装:常见封装格式有mp4、3gp、AVI等,这些封装格式包含了音视频流相关信息。每种封装格式都有自己的规则那么解封装就是按照规则分离出音视频数据。例如:mp4格式MP4(MPEG-4 Par2020-09-11 16:02:03445
1
-
原创 通过图片哈希值计算汉明距离来匹配人脸
opencv通过图片哈希值计算汉明距离来匹配人脸string xmlPath = "/data/data/org.opencv.samples.tutorial2/cache/lbpcascade_frontalface.xml";//识别并截取人脸Mat detectAndDisplay(Mat image) { CascadeClassifier ccf; ccf.load(xmlPath); vector<Rect> faces; Mat gray;2020-08-13 15:39:33297
0
-
原创 opencv中使用Caffe框架
Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab 相关接口。Caffe支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIA cuDNN和Intel2020-08-13 10:52:50191
0
-
原创 opencv PCA主成分分析的使用
简介主成分分析(PCA)是提取数据集最重要特征的统计程序。PCA(Principal Components Analysis,中文名叫主成分分析,是数据降维很常用的算法。按照书上的说法是:寻找最小均方意义下,最能代表原始数据的投影方法。PCA的一个经典应用就是人脸识别,感兴趣的可以在网上搜eigenface。PCA的主要思想是寻找到数据的主轴方向,由主轴构成一个新的坐标系,这里的维数可以比原维数低,然后数据由原坐标系向新的坐标系投影,这个投影的过程就可以是降维的过程。使用//绘制向量轴void2020-08-12 14:20:46316
0
-
原创 SVM 简介和使用
简介Support Vector Machines(SVM)是由分离超平面正式定义的鉴别分类器。如何计算最佳超平面?我们来介绍用于定义超平面的符号:SVM简介其中β被称为权重向量,而β0称为偏差。也可以看看这和超平面更深入的描述,你可以在4.5节(发现分隔条件超平面书的):统计学习的要素通过 T. Hastie, R. Tibshirani和JH Friedman([172])。通过缩放β和可以以无限数量的不同方式表示最优超平面β0。作为惯例,在超平面的所有可能的表示中,选择的是SVM其2020-08-12 10:32:02372
0
-
原创 k-Nearest 最近邻分类算法
概述kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。该算法涉及3个主要因素:训练集、距离与相似的衡量、k的大小;主要考虑因素:距离与相似度。opencv中使用 Mat img = oneMat; Mat gray;2020-08-12 09:14:40149
0
-
原创 opencv features2d对象识别
对象识别代码: const Ptr<AKAZE> &detetor = AKAZE::create(); vector<KeyPoint> oneKeyPoint; vector<KeyPoint> twoKeyPoint; Mat oneDes, twoDes; //角点查找和特征向量计算描述 detetor->detectAndCompute(oneMat,2020-08-11 11:06:49110
0
-
原创 opencv_createsamples和opencv_traincascade命令
opencv_createsamples和opencv_traincascade命令opencv_traincascade -data dstBuild -vec new_vec.vec -bg sample_neg.dat -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 100 -numNeg 700 -w 20 -h 20 -mode ALL -precalcValBufSize 1024 -precalcIdx2020-08-10 17:47:2289
0
-
原创 goodFeaturesToTrack和cornerSubPix使用
goodFeaturesToTrack和cornerSubPix使用?函数说明void cv::goodFeaturesToTrack(cv::InputArray image, // 输入图像(CV_8UC1 CV_32FC1)cv::OutputArray corners, // 输出角点vectorint maxCorners, // 最大角点数目double qualityLevel, // 质量水平系数(小于1.0的正数,一般在0.01-0.1之间)double minDistanc2020-08-04 17:36:07113
0
-
原创 cornerEigenValsAndVecs和cornerMinEigenVal角点检测
概念cornerEigenValsAndVecs和cornerMinEigenVal用于焦点检测cornerMinEigenVal函数作用计算梯度矩阵的最小特征值,用于角点检测void cornerMinEigenVal( InputArray src, OutputArray dst,int blockSize, int ksize = 3,int borderType = BORDER_DEFAULT );CornerEigenValsAndVecs作用计算图像块的特征值和特征向量,用于2020-08-04 15:55:5090
0
-
原创 opencv 相机标定获取去畸变矫正图像
opencv 相机标定获取去畸变图像 private void calcBoardCornerPositions(Mat corners,int mCornersSize, Size mPatternSize,double mSquareSize) { final int cn = 3; float positions[] = new float[mCornersSize * cn]; for (int i = 0; i < mPatternS2020-07-29 13:49:42419
0
-
原创 opencv 棋盘查找findChessboardCorners函数使用
opencv 棋盘查找findChessboardCorners函数使用 Size size=new Size(6,9); MatOfPoint2f pos=new MatOfPoint2f(); boolean chessboardCorners = Calib3d.findChessboardCorners(mat, size, pos, Calib3d.CALIB_CB_ADAPTIVE_THRESH|Calib3d.CALIB_CB_NORMALIZE2020-07-24 14:22:41285
0
-
原创 android使用opencv实现指纹验证效果
接触opencv有一段时间了,刚好公司最近有个指纹相关的功能,其中有个指纹特效晚上现成没有很好定制型所以就用opencv试着写了一个效果,不喜勿喷,高手绕道。效果图:项目源码:https://github.com/woshiliyihang/touchZW效果不是非常好但是修改定制简单,所需要准备的有两张图片:一个是红色前景,一个黑色背景,两张图片尺寸一样大。如果这个对你有帮助记得点赞哦 !!!...2020-07-23 09:39:21695
0
-
原创 android bitmap转成opencv的mat(图像扫描)
如何将bitmap的像素数据转换成opencv的mat对象?首先从bitmap中或者像素数据: String imgPath="/data/data/org.opencv.samples.tutorial2/cache/test_img.png"; bitmap = BitmapFactory.decodeFile(imgPath); ByteBuffer allocate = ByteBuffer.allocate(bitmap.getByteCount(2020-07-21 14:19:26407
0
-
原创 opencv视频输入输出VideoCapture和VideoWriter的使用
opencv依赖了ffmpeg,所以可以轻松对avi视频文件进行操作。打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类。线上代码:bool isInit= false;VideoCapture *inputVideo=NULL;VideoWriter *outputVideo=NULL;JNIEXPORT void JNICALLJava_org_opencv_samples_tuto2020-07-17 10:07:36515
1
-
原创 opencv 视频对象VideoCapture使用
如何使用VideoCapture控制视频输入和对比?基本上,视频操作所需的所有功能集成在cv :: VideoCapture C ++类中。这本身就建立在FFmpeg开源库上。这是OpenCV的基本依赖,所以你不必担心这一点。视频由连续的图像组成,我们将这些在文献中称为帧。在视频文件的情况下,存在指定两帧之间多长时间的帧速率。而对于摄像机,通常每秒可以限制多少帧可以进行数字化,这个属性不太重要,因为相机会看到当前的世界快照。代码:double getPSNR(const Mat& I1, co2020-07-16 16:17:32252
0
-
原创 opencv分水岭图像分割算法watershed
如何利用opencv分水岭图像分割算法threshold来分割图像区域?函数说明:void watershed( InputArray image, InputOutputArray markers );image:原图像markers:包含了轮廓点的数据集合void distanceTransform(InputArray src, OutputArray dst, int distanceType, int maskSize)src – 8-bit, 单通道(二值化)输入图片。dst –2020-07-15 15:11:16146
0
-
原创 opencv检测点在轮廓的相对位置 pointPolygonTest
如何用opencv判断点在轮廓的你面、边上或者外面?函数说明:检测点在轮廓的位置:double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)用于测试一个点是否在多边形中当measureDist设置为true时,返回实际距离值。若返回值为正,表示点在多边形内部,返回值为负,表示在多边形外部,返回值为0,表示在多边形上。当measureDist设置为false时,返回 -1、0、1三个固定值。若返回值为+1,表示2020-07-15 11:26:13453
0
-
原创 opencv计算轮廓的矩moments
如何使用opencv 的moments方法计算轮廓的矩?矩即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。从图像中计算出来的矩通常描述了图像不同种类的几何特征如:大小、灰度、方向、形状等,图像矩广泛应用于模式识别、目标分类、目标识别与防伪估计、图像编码与重构等领域。函数说明api:获取矩的方法:cv::moments ( InputArray2020-07-15 10:28:44169
0
-
原创 opencv 绘制轮廓边框 多边形 圆形 矩形
如何使用opencv 绘制轮廓边框最小包裹 多边形 圆形 矩形?函数说明:Rect boundingRect(InputArray points)points:输入信息,可以为包含点的容器(vector)或是Mat。返回包覆输入信息的最小正矩形。RotatedRect minAreaRect(InputArray points)points:输入信息,可以为包含点的容器(vector)或是Mat。返回包覆输入信息的最小斜矩形。void minEnclosingCircle(InputArra2020-07-14 10:54:05305
0
-
原创 opencv 凸包查找convexHull
凸包(Convex Hull)是一个计算几何(图形学)中的概念,在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(x1, x2….xn)的线性组合来构造。在二维欧几里得空间中,凸包可以想象为一条刚好包着所有点的橡皮圈,用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。常见的有Graham’s Scan法和Jarvis步进法。函数说明:void cv::convexHull ( Inpu2020-07-13 18:39:43170
0
-
原创 opencv findContours 图像轮廓查找
drawContours函数的作用,主要用于画出图像的轮廓函数说明:findContours(InputOutputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode, int method, Point offset = Point());参数1:单通道图像矩阵,可以是灰度图,但更常用的是二值图像,一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像;参数2:contours定义为“vecto2020-07-13 17:57:05306
0
-
原创 opencv 模板匹配查找
模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.模板匹配函数:void matchTemplate(InputArray image, InputArray temp1, OutputArray result, int method);参数说明:image,待搜索的图像,且需为 8 位或 32 位浮点型图像。temp1,搜索模板,需要和原图片有一样的数据类型,且尺寸不能大于源图像。result,比较结果的映射图像,其必须为单通道、32 位浮点型图像,大小为 (image.2020-07-13 17:11:18325
0
-
原创 android speex AEC 回音消除
android speex AEC 回音消除。有时候喇叭声音会被mic录制进去,就会产生回音数据,这是非常让人头疼的,所以去回音在音视频应用中非常重要。现在主流的回音消除手段有android自带api效果很好,如果其他平台就要使用c库了。有哪些c库具备这个功能webrtc 、 speex等。他们都是开源代码,而且后者还没有专利保护可以随意开鲁。今天介绍的就是speex方法消除回声。那么sp...2020-03-24 16:32:381388
0
-
原创 ffmpeg pcm混音
视频会议中经常需要处理的场景有多路音频混音,那么混音有很多种算法有比较主流的有aec、平均权重等方法;如果公司要开发生产级别的音频混合要的算法可能会更加多,可以找算法公司购买。ffmpeg也有混音的操作,用的就是平均权重算法。#define ENABLE_FILTERS 1static const char* filter_descr = "[in0][in1]amix=inputs=2[...2020-03-20 09:19:13546
0
-
原创 如何使用ndk中addr2line工具查询so库中错误信息行数
如何使用ndk中addr2line工具查询so库中错误信息行数。jni现在在android项目中已经非常常见了,但是错误信息并不想android那样友好。常见的c错误如下:2020-03-12 12:13:49.055 10000-10372/com.tianchen.cloud_disk A/libc: Fatal signal 11 (SIGSEGV), code 1, fault ad...2020-03-12 13:46:17330
0
-
原创 android支持的视频音频硬解码器
android支持的视频音频硬解码器MediaCodec支持的有vp8 、VP9 、H.264、H.265、MPEG4、H.263等;MediaCodec支持的音频格式有3gpp、amr-wb、amr-wb、amr-wb、g711-A、g711-U 、AAC(not packaged in LATM)等;参考:“video/x-vnd.on2.vp8” - VP8 video (i.e. ...2020-02-26 12:40:381092
1
-
原创 android jni 动态加载so动态库中函数
android jni 动态加载so动态库中函数。思路:1、懒加载so库。void *handle=dlopen("libpboxcipher.so",RTLD_LAZY);//使用懒加载模式2、定义函数指针。typedef int (*Testfilelen)(unsigned char *filepath, int filepathlen,unsigned char *prikey...2020-02-04 10:55:25881
0
-
原创 c语言多线程和信号量使用
线程使用:int com_index=1;pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;int thread_run(void * ins){ if (pthread_mutex_lock(&mutex)!=0){ LOGI("***lock error"); return -1; ...2019-12-06 11:11:03695
0
-
原创 android 生成json 数据 和解析json数据
业务逻辑类:2014-04-30 14:15:42681
0
-
原创 android 4.2 以后版本对javascript调用android接口做出了修改
android 4.2 以后版本对javascript调用android接口做出了修改只能访问加了 注释 :@JavascriptInterface 的2014-04-30 14:11:24435
0
-
原创 android 电话拨号程序
package com.example.mytool;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import an2014-04-17 13:52:13571
0
-
原创 android 短信发送器
Java 代码:package com.example.mytool;import java.util.ArrayList;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.telepho2014-04-18 10:17:00507
0
-
原创 android 单元测试
在主配置文件中加入权限:2014-04-21 11:20:06460
0
-
转载 使用phonegap html 来制作android应用
PhoneGap的在线打包有大小限制,超过30M的包无法在线打包。当然,可以把包里面的图片、声音文件去掉,然后打包。下载以后,解包,重新打包并签名。蛮麻烦的。本地打包的简单方法如下:下载安装Java环境。下载安装ADT。http://developer.android.com/sdk/index.html打开ADT,新建一个安卓应用项目2014-04-10 18:51:271400
0
-
原创 android 常用控件之 (RadioButton) 的使用
xml:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="m2014-05-12 16:55:54588
0
-
原创 android 常用控件之 (CheckBox)使用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_p2014-05-12 17:11:58392
0
-
转载 android 常用控件之 (Spinner )使用方法
首先简单调用:2014-05-12 15:14:11797
0
-
原创 android 将文件 保存到sd卡 上面
sd卡读写权限:2014-04-26 16:38:02473
0