自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AlanWang4523

兰生幽谷,不以无人而不芳,不以穷困而改节!君子当如兰~

  • 博客(81)
  • 资源 (6)
  • 收藏
  • 关注

原创 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 4104 3

原创 Emscripten + CMakeLists.txt 将 C++ 项目编译成 WebAssembly(.wasm)/js,并编译 Html 测试

上篇文章已讲解如何安装配置 Emscripten 环境。本篇文章主要讲解如何将基于 CMakeLists 配置的 C++ 项目编译成 WebAssembly 库来供 Web 前端使用。编译结果会生成 .wasm、.js,测试代码会生成 .wasm、.js、.html。

2023-10-31 19:18:18 2420 4

原创 Mac 上安装 Emscripten

背景:Web 端需要使用已有的 C++ 库,需要将 C++ 项目编译成 WebAssembly(.wasm) 供 js 调用。可以将 C++ 编译成 .wasm。

2023-10-30 18:31:16 862

原创 FFmpeg 命令行实现居中高清上下模糊播放效果

【代码】FFmpeg 命令行实现居中高清上下模糊播放效果。

2023-07-19 14:17:30 728

原创 adb 命令拷贝文件到安装包内置目录

【代码】adb 命令拷贝文件到安装包内置目录。

2023-07-19 11:47:37 1792

原创 FFmpeg 命令行混音并调整音量

使用 ffmpeg 命令行对两路音频进行混音,并调整两路输入音频的混音音量,并封装成 shell 脚本。

2023-07-19 11:31:45 847

原创 ijkplayer 源码分析(3):setOption 流程及常用参数设置

本文详细介绍了 ijkplayer 常用的参数配置,从源码分析了 setOption 参数设置的流程,以及五大类参数的详细说明。比如通过参数配置使用硬解码还是软解码,Android 音频播放使用 AudioTrack 还是 OpenSL,是否启用 SoundTouch 等等。那 ijkplayer 有哪些参数配置?各个参数有什么作用?有哪些常用的参数配置呢?

2023-03-30 21:40:13 1807 1

原创 ijkplayer 源码分析(2):消息分发处理机制

ijkplayer 源码详解,源码剖析,详细梳理了 ijkplayer 的消息机制,消息分发处理流程。

2023-03-29 21:34:37 482

原创 ijkplayer 源码分析(1):初始化流程

ijkplayer 源码分析,梳理 ijkplayer 动态库加载及初始化路程

2023-03-29 10:27:02 647

原创 Github 突然无法推送代码的解决方案(REMOTE HOST IDENTIFICATION HAS CHANGED)

github 无法推送代码,报错:IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!REMOTE HOST IDENTIFICATION HAS CHANGED!

2023-03-27 11:17:06 1076

原创 ijkplayer Android 端简要使用流程

ijkplayer Android 端的简单使用流程及接口说明

2023-03-24 18:43:31 3839

原创 实现基于 CMake 编译调试 ijkplayer (ijk0.8.8--ffmpeg4.0)

实现基于 CMake 编译 ijkplayer,可以在 AndroidStudio 中查找、跳转、运行、调试 ijkplayer 源码,项目已开源并上传至 Github

2023-03-23 21:24:33 916 3

原创 Android ijkplayer 编译踩坑与记录(ijk0.8.8--ffmpeg4.0)

ijkplayer 0.8.8 最新版基于 FFmpeg 4.0 内核编译流程及编译错误解决,修改脚本及编译结果已上传 github,可自行取用

2023-03-21 21:33:44 1705 2

原创 移动端开源播放器对比与选型(ExoPlayer/ijkplayer/VLC/GStreamer/SmarterPlayer)

移动端开源播放器调研和选型,分别介绍了 ExoPlayer、ijkplayer、VLC、GStreamer、SmartPlayer 等开源播放或 SDK 及各自的优缺点

2023-03-21 15:35:32 8336

原创 Assimp 裁剪编译 Android 库

通过编译配置选项裁剪编译,只编自己需要的部分,如本文:Exporter 全不需要,Importer 只编进来 Obj 和 FBX 格式。配置选项说明:-DBUILD_SHARED_LIBS=OFF 关掉动态库,即编译静态库-DASSIMP_NO_EXPORT=ON 关闭所有的 Exporter(不需要导出模型)-DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=FALSE 关闭编译所有的默认 Importer,即不全部编译-DASSIMP_BUILD_OBJ_IMP

2022-01-12 21:11:05 2456

原创 Assimp 交叉编译 Android iOS 库

基于 Assimp 5.0.1 Release 版裁剪,只保留 OBJ 和 FBX 格式的 3D 模型解析,并使用交叉编译工具链编译成 Android 和 iOS 库编译编译 Android 静态库:① 记得要修改 build_for_android.sh 中最上面的 MY_NDK、MY_SDK、MY_CMAKE 路径,改成自己对应的安装路径② 执行 build_for_android.sh, 最后会生成 Android 平台 arm64-v8a、armeabi-v7a 的静态库编译 i

2021-10-18 21:41:01 1479 7

原创 Mac 搭建 OpenGL 窗口环境(glew glfw)

安装 glew glfwbrew install glewbrew install glfwbrew 安装后的目录在 /usr/local/Cellar 下,后面会使用到路径。用 Clion 创建工程CMakeList.txt 配置如下:cmake_minimum_required(VERSION 3.6)project(CGL3DDemo)set(GLM_H /usr/local/Cellar/glm/0.9.9.8/include)set(GLEW_H /usr/local/Cel

2021-10-12 21:19:04 1298

原创 PS 色彩平衡之算法公式原理详解及 Python 实现

本文介绍了 PS 中色阶的实现原理及公式,并用 Python 实现,自测与 PS 的色阶调整效果基本完全一样。PS 中色彩平衡可以对高光、中间调、阴影 三个色调进行调整,每个色调中有可以对 RGB 三个通道调整,每个通道的调整区间范围是 [-100, 100]色彩平衡之高光高光各色条的现象及规律如下:a. 对于正向的调整,只增加输入图像中该通道的值,其他两个通道不变,比如只调整蓝色 +100,那么原图中蓝色通道值会增加,红色通道和绿色通道不变,如下图;b. 对于负向的调整,该通道值不变,其

2021-07-06 21:35:13 3662 6

原创 PS 阴影/高光中阴影提亮效果之 Python 实现

“阴影/高光”命令是一种用于校正由强逆光而形成剪影的照片,或者校正由于太接近相机闪光灯而有些发白的焦点的方法。在用其他方式采光的图像中,这种调整也可用于使阴影区域变亮。“阴影/高光”命令不是简单地使图像变亮或变暗,它基于阴影或高光中的周围像素(局部相邻像素)增亮或变暗。正因为如此,阴影和高光都有各自的控制选项。默认值设置为修复具有逆光问题的图像,来自 Adobe 官网。阴影:主要用于提亮阴影区域,对非阴影区几乎不产生效果数量:用于控制阴影区要校正的程度,值越大,阴影区域被提的越亮色调:控制被提亮的阴

2021-04-30 19:25:44 4552 3

原创 Python 用 OpenCV 实现 PS 高光/阴影选区

见 PS 高光/阴影 精准选区方法,现用 Python 代码实现类似的 PS 中高光/阴影选区。代码如下:# -*- coding: utf-8 -*-# @Time : 2021-04-28 20:45# @Author : AlanWang4523# @FileName: py_select_shadows_highlight.pyimport osimport sysimport cv2import numpy as npdef hanlde_img(path):

2021-04-28 21:56:18 4103 9

原创 PS 高光/阴影 精准选区方法

1、高光区域选区步骤:选择要处理的图层(图片),然后执行菜单栏:图像–>计算在弹窗中按如下操作:源1:图层选【背景】,通道选【灰色】,不勾选【反向】源2:图层选【背景】,通道选【灰色】,不勾选【反向】混合模式:选【正片叠底】结果:选【选区】ctrl+j 可以复制【高光区域选区】到新的图层2、阴影区域选区步骤:选择要处理的图层(图片),然后执行菜单栏:图像–>计算在弹窗中按如下操作:源1:图层选【背景】,通道选【灰色】,勾选【反向】源2:图层选【背景】,通道选【灰色

2021-04-28 21:26:25 3747

原创 Python 用 OpenCV NumPy 做图像处理的基本操作

在做一些图像处理或算法实验时,使用 Python 比较方便,本文主要介绍在 Python 中使用 OpenCV NumPy 做图像处理的基本操作。熟悉了这些基本操作,进一步对图像做复杂操作就更方便了。如:读取图片保存图片RGB 通道分离转成灰度图取灰度均值对图片做 mask 或抠取指定区域两图片融合# -*- coding: utf-8 -*-# @Time : 2021-04-28 19:45# @Author : AlanWang4523# @FileName: py

2021-04-28 21:03:11 694 1

原创 PS 色阶调整之算法公式原理详解及 Python 实现(色阶原理)

PS 色阶原理公式,色阶调整之算法公式原理详解及 Python 实现

2021-02-26 18:09:34 6539 1

原创 FFmpeg 增加自定义协议读取 Android InputStream

前言需求背景:1、在使用 FFmpeg 命令处理 Android assets 目录下的文件时,无法读取 assets 目录;2、Android Q 及以上系统,使用 FFmpeg 处理时没有权限直接通过路径读取应用外文件实现方案:1、直接拷贝文件到应用内目录(缺点是需要做一次拷贝,如果文件大耗时较长)2、实现 FFmpeg 自定义协议,回调到 Android 层通过 InputStream 读取流,InputStream 可以来自 assets 或 uriFFmpeg 自定义实现实际就是实

2021-02-02 12:17:49 1278 7

原创 Connect to 127.0.0.1:8118 [/127.0.0.1] failed: Connection refused (Connection refused)

Android Studio 编译失败,错误日志如下:解决方案:把 gradle.properties 文件中如下截图的两行注释掉,再重新编译就 OK 了。systemProp.https.proxyHost=127.0.0.1systemProp.https.proxyPort=8118

2021-01-28 20:59:27 2303

原创 Android 任务执行器(异步串行/异步并行/UIThread)

Android 日常使用中经常会用到异步任务执行,以及有时需要在 UIThread 执行一些 UI 操作。执行异步任务也可以使用 Android 自带的 AsyncTask,但避免与其他应用或其他业务竞争资源,最好可以自己维护一个异步任务管理器。执行一些 UI 操作如果是在 Activity 或 Fragment 中倒是方便,但有时如果不在且需要 Toast 一些提示就不方便,因此封装了一个自定义的 TaskExcutor,提供以下方法: /** * 在【默认线程池】【串行执行】异步任务

2020-11-23 21:47:45 918

原创 Android AudioTrack 播放封装及测试

Android 音频录音/播放系列:《Android AudioRecord 录音封装及测试》对 Android AudioTrack 封装,内部管理播放状态,并在暂停播放时做 FadeOut,在恢复播放时做 FadeIn ,避免快速暂停/恢复的播放杂音问题。并设计成回调的拉模式,通过回调向外层要播放的数据。AudioPlayer 封装如下:import android.media.AudioFormat;import android.media.AudioManager;import and

2020-11-23 21:33:28 868

原创 以元素数量为依据的 LRUHashMap

一般 LRU(Least Recently Used) 是以容量大小为准,但有时我们需要以元素数量为准来做 ,实现方式如下:import java.util.HashMap;import java.util.LinkedHashMap;import androidx.annotation.Nullable;/** * 参考 LRU 算法实现的 LinkedHashMap,但是以 put 为准,内部维护一个双向链表, * 最新 put 的元素在队尾,最旧 put 的元素在队头,当 put 一个元

2020-11-23 12:54:56 149

原创 Android AudioRecord 录音封装及测试

对 AudioRecord 封装,内部管理录音状态,并读取数据到 ByteBuffer 通知外层获取录音数据。AudioRecord 封装代码如下:import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder;import com.alan.audioio.audio.common.IDataAvailableListener;import com.alan

2020-11-20 19:32:18 767

原创 Android Audio Wav 文件读写操作的封装

Android 在使用 AudioRecord 录音时,采集的是 PCM 数据,有时候在录完后向听下录音效果,还需要拉到电脑端用 AU 播放,手机端没法直接播放 PCM 数据。因此封装了一个 WavFile 在 PCM 前面增加 Wav 头,生成 wav 文件,可以在手机上直接播放。文件头信息见使用方法如下:String wavSavePath = "/sdcard/Alan/audio/record.wav"; // 指定 PCM 格式(跟 AudioRecord 配置一致),

2020-10-28 21:33:20 3156

原创 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 706

原创 编译 FFmpeg Android 库(FFmpeg + openh264 合并到一个 libffmpeg.so)

编译脚本和文档已放入 github当前编译环境:Mac OSX 10.15.4NDK : android-ndk-r15c1、编译 openh264我编的 openh264-2.1.1 ,源码地址编译脚本如下:#!/bin/bash# Author: AlanWang# Email: [email protected]# Date: 2020-06-30# https://github.com/cisco/openh264/tree/v2.1.1# 需要指定 ANDR.

2020-07-27 19:51:02 1554 1

原创 Android FFmpeg 编译可执行命令程序(依赖动态库)

项目中有两种情况用到 FFmpeg :C++ 底层代码调用 FFmpeg 用于音视频解码Android 上层使用 FFmpeg 命令行工具用于音视频裁剪、分离、加水印等一般用法是编译一份 FFmpeg 静态库或动态库(大小 4M+)用于底层依赖和调用,再编译一份 ffmpeg 可执行程序(大小 4M+),但这样实际上项目中有两份 ffmpeg 核心库,会增加安装包体积。因此优化如下:编译一份 libffmepg.so 用于底层代码依赖和调用(大小 4M+);将 ffmpeg.c 等代码依赖

2020-07-15 12:09:33 790 1

原创 MNN 静态库的编译及使用(libMNN.a 运行报错问题解决)

MNN 静态库编译及使用 libMNN.a 运行报错问题解决

2020-06-30 14:27:40 2187

原创 编译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 4226 3

原创 MNN 编译不过问题

/Users/Alan/work/VideoAudio/FaceDetect/MNN-master/3rd_party/flatbuffers/src/idl_gen_cpp.cpp:77:3: error: constructor for ‘flatbuffers::cpp::CppGenerator’ must explicitlyinitialize the const member ‘...

2019-10-30 20:39:12 1486

原创 OpenCV实现将任意形状ROI区域置黑(多边形区域置黑)

实现 opencv 多边形区域置黑,OpenCV 实现将任意形状ROI区域置黑

2019-10-23 20:06:19 6147

原创 C/C++ Main获取命令行参数

在用 C/C++ 写一些工具时,需要通过命令行传一些参数,这样就可以在命令行终端使用该工具或在脚本中使用该工具,从而实现批量处理。比如近期需要实现一个对文件进行加解密的工具,我需要通过命令行传递如下参数:需要处理的输入文件;处理类型:加密还是解密;处理多少长度;输出文件;1、函数说明本文采用的短参数,函数定义如下:#include <unistd.h> //系统头...

2019-09-28 13:41:17 10566 2

原创 OpenCV flip transpose 实现图像旋转90°、180°、270°

opencv 图像旋转,使用 opencv flip transpose 实现图像旋转 90 180 270

2019-09-10 20:34:25 7839 1

原创 Android 无线调试手机(WiFi 调试)

今天调试时手机没电了,USB 插在电脑上充电非常慢,因此想着试试无线调试,手机查找电源上快速充电。1、手机和电脑连接同一局域网(连同一个 WiFi)2、在手机的设置、网络连接查看连接的 WiFi 下手机的 IP 地址3、手机连上电脑,输入命令:adb tcpip <端口号>,<端口号> 可任意取,只要没被占用,如 6666 4、拔掉数据线输入命...

2019-05-27 20:55:14 16412 5

JNI 传递和返回基本参数

本文件是 JNI 传递和返回基本参数的 Demo,详细介绍见博客:https://blog.csdn.net/u011520181/article/details/79765336,无法资源分设置 0 分,也可以去博客下面的 github 地址下载

2018-03-31

Android OpenGL ES例程代码

这是Android开发指导中的OpenGL编程例子,详情请见博客:http://blog.csdn.net/u011520181/article/details/51525116

2016-05-29

Android 设置Wifi热点、打开与关闭的监听

设置手机WiFi便携热点,并且监听热点打开与关闭,详情请参见我的博客http://blog.csdn.net/u011520181/article/details/46496377

2015-06-14

Android 手机sdcard目录或文件的拷贝 移动 删除 递归

一个关于文件操作的静态工具类 实现手机SD卡目录或文件的拷贝 移动 删除 递归 Demo中有详细注释 在进行Demo测试时 建议先把测试的文件备份一下在测试 否则删除就找不回了 具体可见我博客http: blog csdn net u011520181 article details 39555745">一个关于文件操作的静态工具类 实现手机SD卡目录或文件的拷贝 移动 删除 递归 Demo中有详细注释 在进行Demo测试时 建议先把测试的文件备份一下在测试 否则删除就找不回了 具体可见我博客http: blog csdn net u011520181 a [更多]

2014-09-26

动态加载控件(用于图文并茂显示)

界面上有两个按钮,一个是动态加载textview,一个是动态加载imageview。适用于需要图文并茂(但不能预先知道textview和imageview的个数和位置)的显示界面。加载的控件长度超过屏幕时可以滚动。 如:从网络获取图文并茂的文章(事先不知道文字和图片的位置),可以通过图片标志和文字标志来动态添加textview和imageview

2013-09-02

android页面滑动切换(带多种动画效果)

android程序,滑动屏幕切换页面,anim文件夹里有进、出的移动、缩放、旋转等多种切换动画效果文件。

2013-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除