Jeston TX2 使用cmake 运行测试realsense D435i相关代码(C++)

2023-05-16

Jeston TX2 使用cmake 运行测试realsense D435i相关代码(C++)

前言:

我这些天作毕设的TX2上面的Jetpack包是4.3的。然后我又自己用JetPack4.6.1包刷机了,这个刷机过程也耗时将近一整个白天(希望你们刷机时候的连线务必是官方提供的线,不然确实会有连不上去的可能,我的就连不上,后来翻箱倒柜找到了厂家原装线,这才连接接成功)。刷机的部分我就不多叙述,网上有很多教程。
刷完机之后我又去装了realsense sdk,根据的是这个教程
使用 TX2 和 realsense D435i 相机运行 ORBSLAM3
,这个教程安装realsense满简单的,然后这个教程中给了如何用cmake运行可以调用librealsense的代码例子。可我还需要加上可以调用opencv库的功能,所以本文的主要目的来了:运行可以调用librealsense和opencv库的代码(使用cmake)

参考:

使用 TX2 和 realsense D435i 相机运行 ORBSLAM3

【C++】Cmake使用教程(看这一篇就够了)
(我一开始也不会熟练用cmake,看了这个之后,感觉如果是简单使用的话很容易上手)

ubuntu下使用Cmake编译opencv记录
(我也参考了这一篇文章,如何用cmake调用opencv库,我也是把调用librealsense库和调用opencv库结合起来用的。)

主文:

在这里插入图片描述我在目录里面创建了 两个文件夹。一个是 test_realsense 和realsense_test。test_realsense文件夹主要是测试librealsense库调用的。realsense_test文件夹主要是测试调用opencv库和librealsense库的。

编写并测试test_realsense的程序

在这里插入图片描述test_realsense文件夹里主要是三个文件和一个build文件夹。(build文件夹你也可以不用创建)

首先是CMakeLists.txt文件

# License: Apache 2.0. See LICENSE file in root directory.
# Copyright(c) 2019 Intel Corporation. All Rights Reserved.
cmake_minimum_required(VERSION 3.1.0)

project(hello_librealsense2)#这个你可以随便命名

# Find librealsense2 installed package
find_package(realsense2 REQUIRED)#这个自动找realsense 的依赖库

# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

# Add the application sources to the target
add_executable(${PROJECT_NAME} hello_librealsense2.cpp)

# Link librealsense2 to the target
target_link_libraries(${PROJECT_NAME} ${realsense2_LIBRARY})

然后是
hello_realsense2.cpp

// Copyright(c) 2017 Intel Corporation. All Rights Reserved.

#include <librealsense2/rs.hpp>
#include <librealsense2/hpp/rs_internal.hpp>
#include <iostream>

int main()
{
    rs2::context ctx;

    std::cout << "hello from librealsense - " << RS2_API_VERSION_STR << std::endl;
    std::cout << "You have " << ctx.query_devices().size() << " RealSense devices connected" << std::endl;

    return 0;
}

md文件没必要了,这个也是我从网上拷过来的。

好了,接下来开始编译运行吧。
我们进入build文件夹并打开终端
输入cmake …
然后make 得到hello_realsense2这个可执行文件
在这里插入图片描述
然后我们就运行吧。
输入./hello_realsense2
在这里插入图片描述 运行成功。
我们已经测试好了调用realsense库文件的程序。

接下来

编写并测试调用librealsense和opencv库的程序

在这里插入图片描述进入realsense_test文件夹,我们关注CMakeLists.txt 和main.cpp 文件。其它两个文件,是之前在QT上跑工程的,现在刷机后,我没有装qt,所以这两个文件也没有用了,这两个文件对于我们使用cmake没有任何影响,大家可以忽略它。

CMakeLists.txt文件


# 这是对CMake工具最低版本要求,我们可以使用命令“cmake --version”查看CMake版本
cmake_minimum_required(VERSION 3.1)

# 设置工程文件名
#这是建立一个工程项目(类似于我们VS中建立C++项目一样),括号里面时工程名,工程名我们可以任意给,最后程序编译出来的可执行文件就是这个名字
project(realsense) # 把这块的工程文件名修改成你自己的

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED) # 这是cmake用来查找opencv包用的,不用改
# Find librealsense2 installed package
find_package(realsense2 REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

# Declare the executable target built from your sources
# 这里括号里面的两个参数分别是工程项目名和我们要编译文件名的意思,记住中间一空格键隔开
add_executable(${PROJECT_NAME} main.cpp)  # 改工程文件名 源文件名 

# Link your application with OpenCV libraries 链接到OpenCV库的环节
target_link_libraries(${PROJECT_NAME} ${realsense2_LIBRARY} ${OpenCV_LIBS}) # 改工程文件名

我们发现这个txt文件与上个程序中的文件多了个找opencv库的find_package,和一些message输出函数,还有最后的target_link_libraries。这些功能我个人是顾名思义式地来理解的,大家想深入了解的话,自己去查吧(@。@)

main.cpp

#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API
#include<iostream>
#include<opencv2/opencv.hpp>

int main(int argc, char * argv[]) try
{
    rs2::log_to_console(RS2_LOG_SEVERITY_ERROR);

    /// Create librealsense context for managing devices
    rs2::context ctx;
    auto devs = ctx.query_devices();                  ///获取设备列表
    int device_num = devs.size();
    std::cout<<"device num: "<<device_num<<std::endl;///设备数量

    ///我只连了一个设备,因此我查看第0个设备的信息
    /// 当无设备连接时此处抛出rs2::error异常
    rs2::device dev = devs[0];
    ///设备编号,每个设备都有一个不同的编号, 如果连接了多个设备,便可根据此编号找到你希望启动的设备
    char serial_number[100] = {0};
    strcpy(serial_number, dev.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER));
    printf("serial_number: %s\n",serial_number);

    ///设置从设备管道获取的深度图和彩色图的配置对象
    rs2::config cfg;
    ///配置彩色图像流:分辨率640*480,图像格式:BGR, 帧率:30帧/秒
    ///默认配置任意一个设备,若要配置指定的设备可以根据设备在设备列表里的序列号进行制定:
    ///int indx = 0; ///表示第0个设备
    ///cfg.enable_stream(RS2_STREAM_COLOR,indx, 640, 480, RS2_FORMAT_BGR8, 30);
    cfg.enable_stream(RS2_STREAM_COLOR,640, 480, RS2_FORMAT_BGR8, 30);
    ///配置深度图像流:分辨率640*480,图像格式:Z16, 帧率:30帧/秒
    cfg.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16, 30);

    ///生成Realsense管道,用来封装实际的相机设备
    rs2::pipeline pipe;
    pipe.start(cfg); ///根据给定的配置启动相机管道

    rs2::frameset data;
    data = pipe.wait_for_frames();///等待一帧数据,默认等待5s

    rs2::depth_frame depth       = data.get_depth_frame(); ///获取深度图像数据
    rs2::video_frame color       = data.get_color_frame();  ///获取彩色图像数据
    rs2::stream_profile dprofile =  depth.get_profile();
    rs2::stream_profile cprofile =  color.get_profile();

    ///获取彩色相机内参
    rs2::video_stream_profile cvsprofile(cprofile);
    rs2_intrinsics color_intrin =  cvsprofile.get_intrinsics();
    std::cout<<"\ncolor intrinsics: ";
    std::cout<<color_intrin.width<<"  "<<color_intrin.height<<"  ";
    std::cout<<color_intrin.ppx<<"  "<<color_intrin.ppy<<"  ";
    std::cout<<color_intrin.fx<<"  "<<color_intrin.fy<<std::endl;
    std::cout<<"coeffs: ";
    for(auto value : color_intrin.coeffs)
        std::cout<<value<<"  ";
    std::cout<<std::endl;
    std::cout<<"distortion model: "<<color_intrin.model<<std::endl;///畸变模型

    ///获取深度相机内参
    rs2::video_stream_profile dvsprofile(dprofile);
    rs2_intrinsics depth_intrin =  dvsprofile.get_intrinsics();
    std::cout<<"\ndepth intrinsics: ";
    std::cout<<depth_intrin.width<<"  "<<depth_intrin.height<<"  ";
    std::cout<<depth_intrin.ppx<<"  "<<depth_intrin.ppy<<"  ";
    std::cout<<depth_intrin.fx<<"  "<<depth_intrin.fy<<std::endl;
    std::cout<<"coeffs: ";
    for(auto value : depth_intrin.coeffs)
        std::cout<<value<<"  ";
    std::cout<<std::endl;
    std::cout<<"distortion model: "<<depth_intrin.model<<std::endl;///畸变模型

    ///获取深度相机相对于彩色相机的外参,即变换矩阵: P_color = R * P_depth + T
    rs2_extrinsics extrin = dprofile.get_extrinsics_to(cprofile);
    std::cout<<"\nextrinsics of depth camera to color camera: \nrotaion: "<<std::endl;
    for(int i = 0; i < 3; ++i)
    {
        for(int j = 0; j < 3; ++j)
        {
            float value = extrin.rotation[3*i + j];
            std::cout<<value<<"  ";
        }
        std::cout<<std::endl;
    }
    std::cout<<std::endl;

    std::cout<<"translation: ";
    for(auto value : extrin.translation)
        std::cout<<value<<"  ";
    std::cout<<std::endl;

    while(1)
    {
        ///等待一帧数据,默认等待5s
        data = pipe.wait_for_frames();

        rs2::depth_frame depth  = data.get_depth_frame(); ///获取深度图像数据
        rs2::video_frame color  = data.get_color_frame();  ///获取彩色图像数据
        int color_width  = color.get_width();
        int color_height = color.get_height();

        int depth_width  = depth.get_width();
        int depth_height = depth.get_height();

        if (!color || !depth) break;                ///如果获取不到数据则退出

        ///将彩色图像和深度图像转换为Opencv格式
        cv::Mat image(cv::Size(color_width, color_height), CV_8UC3, (void*)color.get_data(), cv::Mat::AUTO_STEP);
        cv::Mat depthmat(cv::Size(depth_width, depth_height), CV_16U, (void*)depth.get_data(), cv::Mat::AUTO_STEP);

        ///显示
        cv::imshow("image",image);
        cv::imshow("depth",depthmat);
        cv::waitKey(1);
    }
    return EXIT_SUCCESS;
}
catch (const rs2::error & e)
{
    ///捕获相机设备的异常
    std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n    " << e.what() << std::endl;
    return EXIT_FAILURE;
}
catch (const std::exception& e)
{
    std::cerr<<"Other error : " << e.what() << std::endl;
    return EXIT_FAILURE;
}

这个代码是我的这台TX2上以前的代码,估计也是从官网上下下来的。我不对这个函数功能做解释了。
我们进入build目录下并打开终端。
在这里插入图片描述执行cmake …和make之后生成了realsense这个可执行文件。

最后执行,输入./realsense

在这里插入图片描述
会出现两幅图像,一直在动的,一个彩色图,一个深度图。

总结:

TX2在刷机之后,有些远古教程其实不并使用了,蛮繁琐的,其实中文互联网有用并且新颖的东西太少了,不如外网(@。@)。本人在搞TX2的时候配置环境把我配死了,每天都很忧伤(发发牢骚)。
好了,本文完结。希望帮到有缘人。为中文技术圈贡献自己的一份力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jeston TX2 使用cmake 运行测试realsense D435i相关代码(C++) 的相关文章

  • STM32F1和STM32F4这两个系列都是单片机达人的心头好,到底那个好

    STM32F1和STM32F4这两个系列都是单片机达人的心头好 xff0c 到底那个好呢 大家都知道GD32是国内开发的一款单片机 xff0c 能够说是国货之光 xff0c 据说开发的人员是来自ST公司的 xff0c GD32也是以STM3
  • 嵌入式老师傅告诉你单片机6年想转嵌入式Linux值不值得

    嵌入式老师傅告诉你单片机6年想转嵌入式Linux值不值得 一 你真的决定要转嵌入式Linux吗 xff1f 要不要从单片机转嵌入式Linux是一个影响到职业开展的严肃决策 xff0c 我不能帮你拿主见 xff0c 只能帮你列出利弊 xff0
  • STM32收入高也好找工作,所以我学嵌入式linux终究是错付了吗

    STM32收入高也好找工作 xff0c 所以我学嵌入式linux终究是错付了吗 经常有同学纠结问我 xff1a 我到底是学STM32还是学嵌入式linux 这个问题很多人都会有自己的看法 xff0c 今天我试着从多个角度 xff0c 把了解
  • linux下close无法关闭socket

    由于close之后阻塞的recv出现不能立即返回关闭 xff0c socket进入被动一方 这种情况多数是创建和关闭处于不同的线程 解决办法在调用close函数之前先调用shutdown socket SHUT RDWR 函数
  • FPGA是什么呢,通透讲解单片机和FPGA的区别

    FPGA是什么呢 xff0c 通透讲解单片机和FPGA的区别 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff0c 私信我就可以哦 点我头像黑色字体加我地球呺也能领
  • 摊牌了我后悔入行了,浅谈为何不该入行嵌入式

    摊牌了我后悔入行了 xff0c 浅谈为何不该入行嵌入式 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff08 禾厶 亻言 手戈 xff09 最近比较闲 xff0c
  • 关于嵌入式Linux做底层还是应用,要掌握什么技能

    关于嵌入式Linux做底层还是应用 xff0c 要掌握什么技能 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff08 禾厶 亻言 手戈 xff09 最近比较闲 xf
  • c语言必背的100代码

    c语言必背的100代码 插播一条 xff1a 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图 43 源代码 43 开题报告 43 正文 43 外文资料 想要的同学私信找我 我记得刚开始接触编程的时候 xff0c
  • 51单片机简介

    51单片机简介 插播一条 xff1a 文章末尾有惊喜哟 一 51单片机标识信息 通常我们所说的51单片机是指以51内核扩展出的单片机 出产51单片机的厂商很多 xff0c 51单片机的型号也很多 下表列出了一些51单片机的厂商和型号 以上提
  • 都2022年了,互联网与嵌入式怎么选?

    都2022年了 xff0c 互联网与嵌入式怎么选 xff1f 2022届应届毕业生前来作答一波 大家找工作最关心的还是薪资待遇问题 从今年的校招情况来看 xff0c 互联网中的算法岗是要高于嵌入式的 xff0c 而开发岗整体和嵌入式持平 从
  • 做工程师还是转型做产品经理?

    做工程师还是转型做产品经理 xff1f 其实在国内互联网萌芽之初 xff0c 技术 产品 设计 运营职位其实区分的不是特别明显 xff0c 往往是一人身兼多职 xff0c 但随着行业的成熟 xff0c 这些职位之间的分工才逐渐细化 xff1
  • 为什么游戏里的都是伪随机,做不出真随机?

    为什么游戏里的都是伪随机 xff0c 做不出真随机 xff1f 希望来个简单易懂的解释 xff1f 我发现像LOL这些游戏 xff0c 暴击机制都是伪随机的 xff0c 前面几下没暴击 xff0c 后面暴击几率很大概率 像王者荣耀更为明显
  • 高学历毕业生,该学单片机还是plc?

    高学历毕业生 xff0c 该学单片机还是plc xff1f 研究生阶段 xff0c 使用欧姆龙和西门子的PLC做过一些商用的项目 xff0c 但是在课题研究过程中因为偏向于控制算法的落地实现 xff08 借助SOC 43 FPGA xff0
  • 无人机飞控平台ArduPilot源码入门教程 - 首页

    原文链接 简介 ArduPilot代码库有点大 核心的ardupilot git树大概有70万行代码 对新人来说这有点吓人 这个文档打算给出一点建议 关于如何快速上手相关代码 我们假设你熟悉C 43 43 的关键概念 另外好多例子都是假设你
  • C++ 常见面试和笔试坑点总结(持续更新)

    题目一 xff1a 下面的程序是执行if还是else span class hljs keyword int span a 61 span class hljs number 2 span span class hljs keyword i
  • 速腾聚创32线雷达雷达,RVIZ显示激光点云

    1 下载驱动文件 ahren 64 ahren ld ws src git clone https github com RoboSense LiDAR ros rslidar 2 在工作空间ld ws目录下编译 ahren 64 ahre
  • Attitude Control (Copter Code Overview)

    Attitude Control Copter Code Overview Between AC3 1 5 and AC 3 2 the attitude control logic was restructured as part of
  • ROS使用OpenCV读取图像并发布图像消息在rviz中显示

    思路 xff1a xff08 1 xff09 使用opencv读取本地图像 xff08 2 xff09 调用cv bridge CvImage xff08 xff09 toImageMsg 将本地图像发送给rviz显示 1 使用opencv
  • 关于ASP.NET 不允许所请求的注册表访问权。

    这个问题困扰了我一天 xff0c 到现在头还是疼的 xff0c 参考了网上N个解决办法 xff0c 最后问了孟宪会老师 xff0c 老师说 匿名账户没有访问注册表的权限 xff0c 通过老师提醒 xff0c 我试着启用GUEST账户 xff
  • ASP.NET网站安装部署,加入注册码验证等等

    最近通过自己实践 xff0c 完成了ASP NET网站安装部署 xff0c 实现了SQL打包 xff0c 实现了配置文件的打包等等 xff0c 并实现了注册码的验证等等 xff0c 如有需要请跟帖 xff0c 留下联系方式

随机推荐

  • 手把手教你Asp.net三层架构

    首先简单介绍下三层乃至多层架构 xff08 高手跳过 xff09 xff1a BLL 就是business Logic laywer xff08 业务逻辑层 xff09 他只负责向数据提供者也就是DAL调用数据 然后传递给客户程序也就是UI
  • ASP.NET 自定义控件 自定义属性的使用

    最近在给公司一个老的ASP平台进行改版 xff0c 由于这个平台运行时间太长 xff0c 期间有很多程序员进行过修改 xff0c 导致数据库显得很乱 在实际改版时架构采用了多层架构 xff0c 引入工厂模式 xff0c 面向接口 对于资讯类
  • 我的2011之—混迹于中等城市的.net程序员

    眼瞅着走过了2011年 xff0c 过了这一年我就奔三了 2011年完成了几件大事 xff1a 生了儿子 xff0c 买了房子 按说这生活的本质在逐步体现 xff0c 小日子也算凑合吧 可是怎么确无法高兴起来 到底是为什么呢 xff1f 说
  • 树莓派3B+踩坑记录:一、安装Ubuntu Mate

    树莓派3B 43 踩坑记录 xff1a 一 安装Ubuntu Mate 2020 07 27 05 44 15 来源 互联网 分类 xff1a 相关文章 树莓派3B 43 踩坑记录 xff1a 一 安装Ubuntu Mate 树莓派 xff
  • 1. 从0开始学ARM-安装Keil MDK uVision集成开发环境

    关于ARM的一些基本概念 xff0c 大家可以参考我之前的文章 xff1a 到底什么是Cortex ARMv8 arm架构 ARM指令集 soc xff1f 一文帮你梳理基础概念 科普 二 安装Keil MDK uVision集成开发环境
  • Linux信号量(3)-内核信号量

    概念 Linux内核的信号量在概念和原理上和用户态的System V的IPC机制信号量是相同的 xff0c 不过他绝不可能在内核之外使用 xff0c 因此他和System V的IPC机制信号量毫不相干 如果有一个任务想要获得已经被占用的信号
  • 二维码识别的原理

    二维码的特征定位和信息识别 背景介绍 视觉的方法可以用来估计位置和姿态 最容易想到的是在目标上布置多个容易识别的特征 xff0c 这样使用opencv相机标定和 相机畸变矫正 轮廓提取 solvepnp来获取目标相对于相机的位姿 在实际使用
  • Linux iptables命令详解

    iptables 是 Linux 防火墙系统的重要组成部分 xff0c iptables 的主要功能是实现对网络数据包进出设备及转发的控制 当数据包需要进入设备 从设备中流出或者由该设备转发 路由时 xff0c 都可以使用 iptables
  • 一座5g基站造价多少?

    想知道5G基站的大致价格 xff0c 我们可以通过中国移动2020年5G设备采购方案简单计算得出 xff1a 本次采购5G基站数量为23 2万个 xff0c 采购总额为亿元 xff0c 折合每个5G基站的成本在16万元左右 相当于4G基站价
  • 华为交换机查看端口相关信息常用命令,排查故障法宝,转发收藏

    一 查看接口状态 1 显示接口的运行状态和相关信息 display interface Ethernet brief 查看以太网端口的简要信息 xff0c 物理端口是否连通 xff0c 端口是否是全双工 xff0c 带宽是多少 xff0c
  • 从0学Linux驱动第一期视频已经录制完毕,资料全部奉送

    历时4个多月 xff0c 第一期Linux驱动视频录制完毕 xff0c 一共32期 xff0c 现在全部同步到了B站 如果你觉得视频对你有用 xff0c 建议大家多多点赞 xff0c 投投免费硬币 xff0c 算是对我辛苦的劳动的认可 视频
  • 千年虫”是什么东西?一个在计算机诞生之初,遗留下的巨大BUG

    说起来 xff0c 现在社会科技中 xff0c 除了真正学过计算机专业的人 xff0c 大部分人对于 千年虫 这个称号都有些陌生 xff0c 甚至有些人连听都没听过 xff0c 不知道的网友听到 虫 这个字可能还会脑补出一大堆不明生物的样子
  • 小灵通为什么会退市?

    价廉物美的 小灵通 退市最主要的原因 xff0c 其一是因为 小灵通 本身月租太便宜 xff0c 让别的移动运营商无钱可挣 xff1b 其二则是中国电信自己的CDMA网络也发展起来了 xff0c 小灵通 让自己无钱可挣 所以 小灵通 必须退
  • Camera | 4.瑞芯微平台MIPI摄像头应用程序编写

    前面3篇我们讲解了camera的基础概念 xff0c MIPI协议 xff0c CSI2 xff0c 常用命令等 xff0c 本文带领大家入门 xff0c 如何用c语言编写应用程序来操作摄像头 Linux下摄像头驱动都是基于v4l2架构 x
  • Camera | 9.如何让camera支持闪光灯?-基于rk3568

    一 闪光灯基本原理 工作模式 Camera flash led分flash和torch两种模式 flash xff1a 拍照时上光灯瞬间亮一下 xff0c 电流比较大 xff0c 目前是1000mA xff0c 最大电流不能超过led最大承
  • 我的新书上架了!

    talk is cheap xff0c show you my book xff01 新书 从0开始学ARM 终于在各大平台上架了 xff01 xff01 一 关于本书 1 本书主要内容 ARM体系架构是目前市面上的主流处理器体系架构 xf
  • 签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!

    我的新书经过千难万险终于上架 xff0c 为了感谢众多老铁的支持 xff0c 所以上周日搞了签名预售的活动 xff0c 挂了300本 xff0c 一上线很快就被大家买光了 xff0c 留言需要单独写一些话的老铁 xff0c 我也都尽量满足了
  • Android P(Android 9)出现Detected problems with API compatibility问题解决

    安卓系统升级到Android P后打开应用出现Detected problems with API compatibility问题 xff0c 如下图 通过查询发现是 Android P 后谷歌限制了开发者调用非官方公开API 方法或接口
  • eclipse + GDB + JLink 搭建MCU调试环境

    安装Java环境 1 进入Java官网 http www oracle com technetwork java javase downloads index html 2 下载安装包 如果是先要安装Java开发环境 xff0c 就安装JD
  • Jeston TX2 使用cmake 运行测试realsense D435i相关代码(C++)

    Jeston TX2 使用cmake 运行测试realsense D435i相关代码 xff08 C 43 43 xff09 前言 xff1a 我这些天作毕设的TX2上面的Jetpack包是4 3的 然后我又自己用JetPack4 6 1包