From e271a5cec93e227bddfd3f7b3e5a7e7087439d1f Mon Sep 17 00:00:00 2001 From: yewuya Date: Sun, 23 Jan 2022 17:09:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android 使用ffmpeg 转yuv成rgb.md | 54 +++++++++++++++++++ mqtt协议.md | 37 +++++++++++++ ...编译OpenCV 和OpenCV_contrib android版本.md | 18 ++++++- 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 android 使用ffmpeg 转yuv成rgb.md create mode 100644 mqtt协议.md diff --git a/android 使用ffmpeg 转yuv成rgb.md b/android 使用ffmpeg 转yuv成rgb.md new file mode 100644 index 0000000..a054827 --- /dev/null +++ b/android 使用ffmpeg 转yuv成rgb.md @@ -0,0 +1,54 @@ +# android 使用ffmpeg 将avframe yuv 成avframe rgb + +## 设置视频转换参数 + +```java +img_convert_ctx = sws_getContext( + 1440, //源视频宽度 + 1088, //源视频高度 + AV_PIX_FMT_YUV420P, //源视频格式 + 720, //输出视频宽度 + 540, //输出视频高度 + AV_PIX_FMT_RGB24, //输出视频格式 + SWS_POINT, //视频转码算法 + null, //额外参数1 + null, //额外参数2 + (DoublePointer) null //额外参数3 +); +``` + + +## 转换数据 + +```java +sws_scale( + img_convert_ctx, + //SwsContext *swsContext 转换上下文 + m_pFrame.data(), + //源视频数据 + m_pFrame.linesize(), + //源视频每行数据长度 + 0, + //源图像数据数组处理的索引值 , 从 0 开始计数 , 一般是 0 + m_pCodecCtx.height(), + //源视频高度即有多少行数据 + m_pFrameRGB.data(), + //目标视频数据 + m_pFrameRGB.linesize() + //目标视频每行有多少数据 +); + +``` + +## avframe rgb 转 mat + +```java +Mat mat = new Mat(1080, //图片高度 +1440, //图片宽度 +CvType.CV_8UC3, //图片格式 +m_pFrameRGB.data(0).asBuffer(), //avframe 数据 +m_pFrameRGB.linesize(0) //数据每行长度 +); + +``` + diff --git a/mqtt协议.md b/mqtt协议.md new file mode 100644 index 0000000..4d85a24 --- /dev/null +++ b/mqtt协议.md @@ -0,0 +1,37 @@ +# 自检消息内容 + +```json + +{ + "remote":遥控器连接状态, //0 正常 1 断开 + "drone":无人机连接状态, //0 正常 1 断开 + "power":电量, //0 电量充足 1电量不足 + "battery_temperature", //0 正常 1 过高 2 过低 + "battery_cycle":电池循环次数, //0 正常 1 循环次数过高 + "storage":存储容量, //0 正常 1 容量不足 + "signal":遥控器信号强度, //0 正常 1 信号太差 + "sensors":传感器状态, //0 正常 1 传感器异常 + "gimbal":云台检测, //0 有相机 1 有相机 +} + + +``` + +## 测试消息 + +```json +{ + + "request_id":"0001", + "platform":"0001", + "mission_id":"000001", + "device_id":"001", + "send_sdk":"msdk", + "type":"uav_check", + "data":"", + "status":200, + "time":"2021-12-21" + +} +``` + diff --git a/手动编译OpenCV 和OpenCV_contrib android版本.md b/手动编译OpenCV 和OpenCV_contrib android版本.md index 3f7472a..dcb154a 100644 --- a/手动编译OpenCV 和OpenCV_contrib android版本.md +++ b/手动编译OpenCV 和OpenCV_contrib android版本.md @@ -103,7 +103,23 @@ python ../opencv/platforms/android/build_sdk.py --extra_modules_path=../opencv_ ## Android 项目导入opencv sdk +* 修改sdk build.gradle 文件中的compileSdkVersion 30 targetSdkVersion 30为Android项目相同的版本 +* 注释 path (project.projectDir.toString() + '/libcxx_helper/CMakeLists.txt') +* 添加jnilib 在app/路径下创建lib文件夹并将sdk\native\libs\arm64-v8a 复制到lib 路径下 +```java + sourceSets { + main { + jni.srcDirs=[] + jniLibs.srcDirs=['libs'] //jnilib 路径 + } + } +``` +* 在项目目录下创建文件夹custom_opencv并将sdk/java 和build.gradle复制到文件夹下 +* setting.gradle 添加 include ':custom_opencv' +* app build.gradle 添加依赖 - + ```java + implementation project(path: ':custom_opencv') + ```