原创
AlanWang4523
这个作者很懒,什么都没留下…
展开
-
Android SoundPool 钢琴弹奏(停止播放做 FadeOut)
Android SoundPool 主要用于快速播放多个短音频,[开发文档链接](https://developer.android.com/reference/android/media/SoundPool)。应用场景如:钢琴弹奏 APP,可用 SoundPool 播放每个琴键的音频资源。先看应用场景效果:为使用方便,封装 SoundPool 如下:package com.alan.audioio.audio;import android.content.res.AssetFileDescr.原创 2020-10-27 20:46:09 · 767 阅读 · 0 评论 -
编译OpenCV Android库(自定义配置)
根据自己需要的模块交叉编译 Android OpenCV 库,如下面的脚本只编译了 opencv_core 、opencv_imgproc、opencv_video 三个模块,如果需要裁剪自定制,可以修改 build_opencv_modules 函数,打开或关闭你需要的模块。模块所需要依赖的其他模块可在 OptionArgs.txt 里查找 xxx_LIB_DEPENDS,xxx 为要编译的模块。比如,要编译 opencv_video,可以在 OptionArgs.txt 里搜索 opencv_video原创 2020-06-23 20:51:35 · 4562 阅读 · 4 评论 -
Failed to load the native TensorFlow runtime in Mac OS 10.11.6
当前环境:Mac OSX 10.11.6TensorFlow installed with pipTensorFlow version: 1.13.0Python version: 3.6.5执行:import tensorflow as tf 时报如下错误:Traceback (most recent call last): File "/Users/mikko/dev/wi...原创 2019-04-11 01:35:05 · 5960 阅读 · 2 评论 -
Android 使用 mp4parser 做视频裁剪
做音视频时我们很多时候需要做音视频裁剪,本文介绍使用开源库 [mp4parser](https://github.com/sannies/mp4parser) 做裁剪。使用时先在 gradle 中配置依赖:compile 'com.googlecode.mp4parser:isoparser:1.1.21'将 mp4parser 封装成音视频裁剪工具类:import android.t...原创 2018-11-20 20:59:47 · 5375 阅读 · 1 评论 -
Python 用 OpenCV 绘制基本图形系列(总)
以下是 Python 用 OpenCV 绘制基本图形的文章汇总,每篇文章都有函数及参数的详细说明、完成 Python 代码及运行效果图。文章链接如下:Python 安装 OpenCV 及显示图像 (1)Python 用 OpenCV 画点和圆 (2)Python 用 OpenCV 画直线 (3)Python 用 OpenCV 画矩形 (4)Python 用 OpenCV 画椭圆...原创 2018-11-15 20:55:20 · 4146 阅读 · 3 评论 -
Python 用 OpenCV 显示文字 (6)
利用 OpenCV 自带的 putText() 函数绘制文字 并显示,其函数声明如下:cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])img:要画的圆所在的矩形或图像text:要绘制的文字org:文字在图像中的左下角坐标fontFa...原创 2018-11-15 20:35:40 · 13750 阅读 · 3 评论 -
Python 用 OpenCV 画椭圆 (5)
利用 OpenCV 自带的 ellipse() 函数画椭圆并显示,其函数声明如下:cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) img:要画的圆所在的矩形或图像center:椭圆的中心点axes:椭圆的长半轴和短半轴的...原创 2018-11-13 21:38:13 · 6829 阅读 · 1 评论 -
Python 用 OpenCV 画矩形 (4)
利用 OpenCV 自带的 rectangle() 函数画矩形并显示,其函数声明如下:cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) img:要画的圆所在的矩形或图像pt1:矩形左上角的点pt2:矩形右下角的点color:线条颜色,如 (0, 0, 255) 红色,BGRthickness...原创 2018-11-13 21:15:03 · 40841 阅读 · 6 评论 -
OpenCV Mat 数据读写
1、创建 Mat 对象:// 创建一个 320x240 的 8 位无符号型 4 通道全 0 的 Matcv::Mat mBGRAImg = cv::Mat::zeros(320, 240, CV_8UC4);// 创建一个 320x240 的 8 位无符号型 1 通道全 0 的 Matcv::Mat mGrayImg = cv::Mat::zeros(320, 240, CV_...原创 2018-11-07 21:39:22 · 14976 阅读 · 0 评论 -
Python 用 OpenCV 画点和圆 (2)
利用 opencv 里自带的circle() 函数可以绘制以一个点为圆心特定半径的圆,其函数的声明如下:cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])函数参数含义如下:img:要画的圆所在的矩形或图像center:圆心坐标,如 (100, 100)radius:半径,如 10color...原创 2018-11-10 21:20:21 · 126297 阅读 · 4 评论 -
Python 安装 OpenCV 及显示图像 (1)
1、Python 安装 OpenCVPython 安装 OpenCV 的命令很简单,就一条命令,如下(前置条件是已安装 pip):pip install opencv-python出现如下输出即表示安装成功:2、Python 代码中用 OpenCV 读取图片并显示#!/usr/bin/python# -*- coding: UTF-8 -*-import numpy as np...原创 2018-11-10 20:08:17 · 2172 阅读 · 0 评论 -
OpenCV 绘制人脸检测框和关键点
在做人脸检测时,我们需要将检测的结果绘制到图片上查看效果,这时可以利用 OpenCV 的基本绘图函数将人脸检测框和人脸关键点绘制到原图上。关键代码如下:// TODO FaceDetectEngine 初始化cv::Mat image = cv::imread(test_file, cv::IMREAD_UNCHANGED);// 原始图像cv::Mat gray;cv::cvtCol...原创 2018-11-16 20:06:16 · 7379 阅读 · 2 评论 -
OpenCV C/C++实现图像拼接(opencv 贴小图到大图)
利用 OpenCV 实现将多张小图拼接成一张大图,并支持小图放任意位置。OpenCV C++实现图像拼接,opencv 贴小图到大图,opencv 贴多张图到大图原创 2019-03-06 21:53:58 · 7629 阅读 · 1 评论 -
C/C++ Main获取命令行参数
在用 C/C++ 写一些工具时,需要通过命令行传一些参数,这样就可以在命令行终端使用该工具或在脚本中使用该工具,从而实现批量处理。比如近期需要实现一个对文件进行加解密的工具,我需要通过命令行传递如下参数:需要处理的输入文件;处理类型:加密还是解密;处理多少长度;输出文件;1、函数说明本文采用的短参数,函数定义如下:#include <unistd.h> //系统头...原创 2019-09-28 13:41:17 · 10953 阅读 · 2 评论 -
OpenCV flip transpose 实现图像旋转90°、180°、270°
opencv 图像旋转,使用 opencv flip transpose 实现图像旋转 90 180 270原创 2019-09-10 20:34:25 · 8525 阅读 · 1 评论 -
Android 无线调试手机(WiFi 调试)
今天调试时手机没电了,USB 插在电脑上充电非常慢,因此想着试试无线调试,手机查找电源上快速充电。1、手机和电脑连接同一局域网(连同一个 WiFi)2、在手机的设置、网络连接查看连接的 WiFi 下手机的 IP 地址3、手机连上电脑,输入命令:adb tcpip <端口号>,<端口号> 可任意取,只要没被占用,如 6666 4、拔掉数据线输入命...原创 2019-05-27 20:55:14 · 17046 阅读 · 5 评论 -
Android 使用 mp4parser 做视频拼接合并
做短视频拍摄时,在分段录制结束需要将多个视频片段拼接成一个视频文件,然后进入预览界面播放。有两种方案:方案一:使用 FFMpeg 进行视频拼接,命令如下:// inputListFilePath 为需要合并的文件列表文件,每行一个文件路径String cmd = "ffmpeg -y -f concat -safe 0 -i " + inputListFilePath + " -c co...原创 2019-04-16 01:07:07 · 4580 阅读 · 1 评论 -
Python从txt文件中读取float数据
有如下存在 txt 文件的数据,需要将其读取为 float 型数据并处理:0.000000000000000000e+00 0.000000000000000000e+000.000000000000000000e+00 0.000000000000000000e+001.000000000000000000e+00 5.876317942364757073e+031.0000000000...原创 2019-04-11 20:02:33 · 16089 阅读 · 7 评论 -
Mac 查找目录下包含某字符串的所有文件
如题,在需要查找的目录下,输入如下命令:grep -n "get_spg2lsf" -r ./该命令会查找当前目录及其子目录下所有包含指定字符串的文件,会列出文件位置、该行的内容以及行号。如下:...原创 2019-04-11 02:00:24 · 21118 阅读 · 1 评论 -
TensorFlow 安装指定版本:Could not find a version that satisfies the requirement tensorflow
Mac OS 安装 TensorFlow 出现如题错误。Collecting tensorflow==1.5 Could not find a version that satisfies the requirement tensorflow==1.5 (from versions: 1.13.0rc1, 1.13.0rc2, 1.13.1, 2.0.0a0)No matching dis...原创 2019-04-11 01:50:25 · 1396 阅读 · 0 评论 -
Python 用 OpenCV 画线 (3)
利用 OpenCV 自带的 line() 函数画直线并显示,其函数声明如下:cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])img:要画的圆所在的矩形或图像pt1:直线起点pt2:直线终点color:线条颜色,如 (0, 0, 255) 红色,BGRthickness:线条宽度lineType:- ...原创 2018-11-12 22:11:27 · 48383 阅读 · 1 评论 -
gradle 配置生成不同 ABI 版本及不同名字的 APK
def releaseTime() { return new Date().format("yyyy-MM-dd-HH-mm")}import com.android.build.OutputFileandroid { ... splits { abi { enable true reset() ...原创 2018-10-19 16:34:14 · 3406 阅读 · 0 评论 -
FileDownLoader https 无法下载问题(SSLHandshakeException)
1、问题:项目下载改为 https 协议,连接代理后使用 liulishuo 的 FileDownLoader 无法下载,抛出异常如下:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not fou...原创 2018-08-30 20:31:12 · 4662 阅读 · 2 评论 -
Android OpenGL ES2.0编程教程系列之添加运动(五)
原文链接在屏幕上绘制图形只是OpenGL的相当基础的特点,你也可以用其他的Android图形框架类来实现这些,包括Canvas和Drawable对象。OpenGL ES为在三维空间中移动和变换提供了额外的功能,并提供了创建引人注目的用户体验的独特方式。在本次课程中,你将进一步使用OpenGL ES学习怎样为你的图形添加一个旋转动作。旋转一个图形用OpenGL ES 2.0来旋转一个翻译 2016-05-29 15:10:33 · 860 阅读 · 0 评论 -
Android OpenGL ES2.0编程教程系列之投影和相机视图的应用(四)
原文链接OpenGL ES环境允许你以更接近于你眼睛看到的物理对象的方式来显示你绘制的对象。物理查看的模拟是通过对你所绘制的对象的坐标进行数学变换完成的:Projection — 这个变换是基于他们所显示的GLSurfaceView的宽和高来调整绘制对象的坐标的。没有这个计算变换,通过OpenGL绘制的形状会在不同显示窗口变形。这个投影变化通常只会在OpenGL view的比例被确翻译 2016-05-29 14:34:57 · 1781 阅读 · 1 评论 -
Android OpenGL ES2.0编程教程系列之绘制图形(三)
原文链接定义好想要用OpenGL绘制的图形后,你大概想要画它们了。绘制形状可能需要比你想象的更多的代码,因为API提供了在图形渲染管线上的大量的控制。本节内容讲解如何使用OpenGL ES 2.0 API来绘制你在上节内容中定义的形状。初始化形状在任何绘制之前,你都必须初始化和加载你计划绘制的图形。除非你在程序中使用的形状的结构(原始坐标)是在程序执行过程中改变的,你应该在你的渲染翻译 2016-05-28 23:51:21 · 1996 阅读 · 0 评论 -
Android OpenGL ES2.0编程教程系列之定义形状(二)
原文链接能够定义用于在一个OpenGL ES view的上下文环境中绘制的图形,是你创建高端图形杰作的第一步。如果不知道一些关于OpenGL ES期待你如何定义图形对象的基本知识,用OpenGL ES绘图会有点棘手。本节内容说明了相对于Android屏幕的OpenGL ES坐标系统、定义形状的基本知识、形状的面以及定义三角形和正方形。定义一个三角形OpenGL ES允许你使用三维空翻译 2016-05-28 22:26:06 · 1118 阅读 · 0 评论 -
Android OpenGL ES2.0编程教程系列之创建OpenGL ES环境(一)
原文链接为了用OpenGL在你的Android应用上绘制图形,你必须为它们创建一个视图容器。创建视图容器更直接的方式之一是继承GLSurfaceView 和 GLSurfaceView.Renderer。GLSurfaceView 是一个用OpenGL做图形绘制的视图容器,GLSurfaceView.Renderer用来控制在视图画什么。想了解更多关于这些类的信息,请看OpenGL开发者指导。翻译 2016-05-28 17:34:41 · 2277 阅读 · 0 评论 -
Android OpenGL ES2.0编程教程系列之总览
原文链接翻译 2016-05-28 15:32:32 · 949 阅读 · 0 评论 -
Android Studio导致的假死机问题的解决
问题描述:Android Studio启动运行时或rebuild时导致系统假死,只有鼠标能动,点击任何界面都没有反应,浏览器都没法点,都没法查,Alt+shift+delete都不好使无法调出资源管理器,开始菜单都无法调出来,也就无法关机,最后只能长按电源键强制断电关机,N多次都这样,无语了。最后每次开机先不启动AS(Android Studio),先查好解决办法再打开测试,看是否解决,最原创 2016-04-16 17:24:46 · 7350 阅读 · 0 评论 -
友盟社会化分享 ### 微信发送被拒绝 微信与朋友圈点击无响应
1.微信分享不成功的原因:(来自友盟论坛)(1):应用是否通过审核。android平台必须要通过审核后才可以使用。(2):确认AppId是否填写正确。(3):是否是导出带签名的apk文件,ran然后再安装运行。(4):包名是否申请应用填写的包名一致。(5):签名问题。检查签名是否一致,请按照以下步骤检查: 1>:在命令行运行以下命令:原创 2015-09-18 11:17:11 · 1884 阅读 · 0 评论 -
Android 设置Wifi热点、打开与关闭的监听
监听手机打开与关闭wifi便携式热点原创 2015-06-14 23:43:36 · 15314 阅读 · 6 评论 -
Android OpenGL ES2.0编程教程系列之响应触摸事件(六)
原文链接像旋转三角形一样,通过预设程序来让对象移动对于吸引注意是很有用的,但是如果你想让你的OpenGL图形有用户交互呢?让你的OpenGL ES应用有触摸交互的关键是,扩展你的GLSurfaceView的实现重载onTouchEvent()方法来监听触摸事件。本节内容将向你展示如何监听触摸事件来让用户旋转一个图形。设置触摸事件为了你的OpenGL ES应用能够响应触摸事件,你必须翻译 2016-05-29 15:46:36 · 1198 阅读 · 0 评论 -
Audio WAV文件头格式
WAV文件头格式含义、代码生成WAV文件头及修改更新WAV文件头原创 2017-03-02 10:46:55 · 7870 阅读 · 1 评论 -
CMake Error: shared library text segment is not shareable
在编译ffmpeg时遇到以下错误/Users/XXXXX/Alan/MyAndroidPro/FfmpegLib/app/src/main/cpp/libs/x86/lib/libavutil.a -lm -lz -latomic -lm "/Users/XXXXX/AndroidDev/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x...原创 2017-11-09 11:29:22 · 2112 阅读 · 0 评论 -
使用 cmake 编译可执行文件
如我们写好源代码和主函数,可以不使用 IDE 直接用命令行编译成可执行文件。比如需要提供一个工具程序提供给后端通过命令行调用。可能有的人认为直接编译成可执行文件给别人不就 OK 了吗?但问题来了,你本地编译的平台和架构可能和别人的不一样,直接给别人编译好的可执行文件可能跑不起来,举个栗子,我本地是 Mac 电脑,我编译好的执行文件在 Mac 电脑上跑没问题,但服务端同学是 Linux 的就跑不...原创 2018-08-15 13:15:04 · 43472 阅读 · 2 评论 -
编程技巧之用 do{}while(false) 进行多错误处理
编程中我们经常会遇到这样的问题,一个函数中有很多处理逻辑,每个步骤都有可能出错,对于出错的要做相同的错误处理,错误出口很多。那么通常我们怎么处理呢?一般有两种处理方式:if else 多层嵌套如下,可以看到这种处理嵌套逻辑特别深void function() { if(a != null) { if(b() == true) { if(c() == ...原创 2018-06-30 15:47:01 · 927 阅读 · 0 评论 -
Python 获取指定文件夹下的目录和文件
经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结。Python 中扫描目录有两种方法:os.listdir 和 os.walk。一、os.listdir 方法os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。 它也不包括 '.' 和...原创 2018-06-30 15:04:27 · 64543 阅读 · 0 评论 -
Android 监听系统媒体音量变化
在做 SAPA 适配时由于其直连驱动层不经过 Android 的音量增益控制,所以调节系统媒体音量对音量改变无效。现要调节系统音量时也可以控制播放的音量,那么就需要监听系统音量变化,然后转换成增益给输出数据乘以对应比率从而实现对音量的控制。一般监听音量多是监听手机物理音量按键的点击事件,但是在音量控制面板拖动音量条改变音量就无法监听。那么我们需要分析无论是按音量键还是拖动音量条,系统都做了什么呢?...原创 2018-05-31 20:10:29 · 21019 阅读 · 10 评论 -
Android 拦截音量键,控制系统媒体音量
在上一篇文章中介绍过,在做 SAPA 适配时由于其直连驱动层不经过 Android 的音量增益控制,所以调节系统媒体音量对音量改变无效。如果没有音乐在放的时候,按调节音量的键,默认调节的是铃声的音量,所以在使用 SAPA 播放音频时,因为不经过 Android 层,系统认为没有音乐播放,在按音量键时调节的是铃声音量无法控制播放音量。思路:调用系统 API 强制设置为控制媒体音量截获物理音量键的按键...原创 2018-06-06 09:19:55 · 7676 阅读 · 0 评论