VS2022OpenCV跨平台Linux CMake项目搭建过程(Jetson nano测试)

简介: VS2022OpenCV跨平台Linux CMake项目搭建过程(Jetson nano测试)

VS2022跨平台Linux CMake项目搭建过程

1. 环境准备

开发机器:

  • VS2022(VS2019 16以上都支持)

下载地址:https://visualstudio.microsoft.com/zh-hans/vs/

应注意Linux开发负载要存在,根据下图检查

2018122814580746.png

2018122814580746.png

2018122814580746.png

Linux设备:

请确保安装了以下项:

  • gcc
  • gdb
  • rsync
  • zip
  • ninja-build(Visual Studio 2019 或更高版本)

安装命令 sudo apt-get install g++ gdb make ninja-build rsync zip

若没有ninja,会在debug的时候报错

2018122814580746.png

因为新版VS生成的cmake项目默认生成器是ninja

2. 配置Cmake项目

新建一个cmake项目,进入后会生成以下默认工程目录结构及文件

2018122814580746.png

每个项目都会有个CMakeLists.txt,最外层为全局的顶层CMakeLists.txt(作用参考)

最外层还会有一个CMakePresets.json,新版VS生成这个.json文件,某些稍旧版本为CMakepreSettings.json,作用类似于.vcproj,里面有在VS 和VS Code中识别的工程配置文件。

其所有属性参考

打开CMakePresets.json可以看到配置2018122814580746.png

其与启动管理器对应,上图为在本地计算机上编译运行的配置

如果在jetson nano等Linux设备上配置编译,请添加外部SSH链接

2018122814580746.png

2018122814580746.png

点击切换

2018122814580746.png

添加成功

2018122814580746.png

按照自己的Linux架构添加2018122814580746.png

"architecture": {
            "strategy": "external",
            "value": "aarch64"
          },

查看自己的架构可以在Linux端用 uname -a 查看

rita@xxx:~$ uname -a
Linux xxx 4.9.253-tegra #1 SMP PREEMPT Mon Jul 26 12:13:06 PDT 2021 aarch64 aarch64 aarch64 GNU/Linux

给工程配置CMakeLists.txt,添加OpenCV的依赖

find_package(OpenCV REQUIRED)
target_link_libraries(BiobaseStereoDepth LINK_PRIVATE ${OpenCV_LIBS})

2018122814580746.png

ctrl+s保存,上方出现从CMake收集信息后将刷新xxx,一定要等这个结束,下面的输出也会提示现在的生成过程,ctrl+s后才会自动加载缓冲生成

2018122814580746.png

生成成功后在你的启动项中,就可以看到你成功生成的项目了,点击选择成启动项目

2018122814580746.png

写入自己的OpenCV代码,然后点击绿色三角的启动,就会自动编译并运行工程了,默认生成到了你的Linux平台上的~/.vs

2018122814580746.png

示例代码:来源于网络,应该是毛星云书里的源码

// xxx.cpp: 定义应用程序的入口点。
//
#include "xxx.h" //这里应有opencv必要的头文件
#include <vector>
using namespace std;
using namespace cv;
void creatAlphaMat(Mat& mat) // 创建一个图像
{
    for (int i = 0; i < mat.rows; i++)
    {
        for (int j = 0; j < mat.cols; j++)
        {
            Vec4b& rgba = mat.at<Vec4b>(i, j);
            rgba[0] = UCHAR_MAX;
            rgba[1] = saturate_cast<uchar>((float(mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX);
            rgba[2] = saturate_cast<uchar>((float(mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX);
            rgba[3] = saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
        }
    }
}
int main()
{
    //创建带Alpha通道的 Mat
    Mat mat(480, 640, CV_8UC4);
    creatAlphaMat(mat);
    vector<int>compression_params;
    compression_params.push_back(IMWRITE_PNG_COMPRESSION);
    compression_params.push_back(9);
    try {
        imwrite("透明值图.png", mat, compression_params);
        imshow("生成的PNG图", mat);
        fprintf(stdout, "PNG图片文件的数据保存完毕");
        waitKey(0);
    }
    catch (runtime_error& ex) {
        fprintf(stderr, "图像转换发生错误:%s\n", ex.what());
        return 1;
    }
    return 0;
}

再有编程任务可以此类推,如果是CMake和OpenCV基础、Linux基础等不熟悉,可以在互联网上寻求帮助,本篇博客对过程外的知识运用不做解释,请谅解!

相关文章
|
2月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
141 2
|
2月前
|
安全 Linux 虚拟化
|
2天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
28 7
|
5天前
|
安全 Linux 测试技术
Intel Linux 内核测试套件-LKVS介绍 | 龙蜥大讲堂104期
《Intel Linux内核测试套件-LKVS介绍》(龙蜥大讲堂104期)主要介绍了LKVS的定义、使用方法、测试范围、典型案例及其优势。LKVS是轻量级、低耦合且高代码覆盖率的测试工具,涵盖20多个硬件和内核属性,已开源并集成到多个社区CICD系统中。课程详细讲解了如何使用LKVS进行CPU、电源管理和安全特性(如TDX、CET)的测试,并展示了其在实际应用中的价值。
|
1月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
73 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
51 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
2月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
68 4
|
3月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
101 2
|
3月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
1099 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
3月前
|
Linux
CMake在linux上的使用
这篇文章介绍了在Linux系统上使用CMake的基本步骤,包括安装CMake、创建和编辑CMakeLists.txt文件、生成构建文件以及编译和安装项目的命令。
109 0

热门文章

最新文章