二、RK3588-安装Opencv-4.8.1(C++版本)

1.前言

        OpenCV是一个跨平台的计算机视觉和机器学习软件库,基于Apache2.0许可(开源)发行。它可以在Linux、Windows、Android和Mac OS操作系统上运行。OpenCV由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口。这个库实现了图像处理和计算机视觉方面的很多通用算法,主要倾向于实时视觉应用。OpenCV也提供对于C#、Ch、Ruby,GO的支持。

        OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,该程序库也可以使用英特尔公司的IPP进行加速处理。OpenCV-Python是OpenCV的Python API,结合了OpenCV C++API和Python语言的最佳特性。所有OpenCV数组结构都转换为Numpy数组。

2. Opencv文件准备

2.1更新软件列表

sudo apt update

2.2安装依赖

sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran

2.3下载Opencv

        现在zip文件:opencv-4.8.1

3.安装

3.1 拷贝文件并解压

unzip  opencv-4.8.1.zip

3.2 编译

cd opencv-4.8.1

mkdir build

cd build

cmake .. 
make -j8

3.3 安装

sudo make install

3.4 配置环境

step1: 配置ld.so.conf文件

(1) sudo gedit /etc/ld.so.conf

(2)添加内容

        include /etc/ld.so.conf.d/*.conf
        include /usr/local/lib

(3)sudo ldconfig

step2: 生成opencv4.pc文件

     install后使用pkg-config --modversion opencv4查看版本,提示缺少opencv4.pc这个配置信息文件

 sudo vim /usr/local/lib/pkgconfig/opencv4.pc

拷贝下面的内容,版本号修改成安装的版本号

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version:4.8.1
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core

step3:  配置系统bash

sudo gedit /etc/bash.bashrc

        末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

source /etc/bash.bashrc

step4: 查看版本

pkg-config --modversion opencv4

4.验证Opencv的版本以及是否可用

        step1:构建CMakeLists.txt

cmake_minimum_required(VERSION 3.10)project(opencv_test)# 检查OpenCV库
find_package(OpenCV REQUIRED)# 打印opencv库的相关信息
if(OpenCV_FOUND)message(STATUS "OpenCV library status:")message(STATUS "version: ${OpenCV_VERSION}")message(STATUS "include path: ${OpenCV_INCLUDE_DIRS}")
else()message(FATAL_ERROR "OpenCV library not found")
endif()
# 添加头文件
include_directories(${OpenCV_INCLUDE_DIRS})
# 链接库
link_libraries(${OpenCV_LIBS})add_executable(opencv_test gray_test.cpp)

step2:编写源文件

// 图片的读取和显示
// 导入opencv头文件
#include "opencv2/opencv.hpp"
#include <iostream>int main(int argc, char** argv)
{// 读取图片,mat是matrix的缩写,是一个矩阵,类似与numpy ndarraycv::Mat image = cv::imread("./cat.jpg");// 判断是否读取成功if (image.empty()){std::cout << "无法读取图片 " << std::endl;return 1;}// 打印图片高度和宽度std::cout << "图片高度: " << image.rows << " 宽度: " << image.cols << std::endl;// 打印图片data// 以Numpy的方式打印// std::cout << "图片data: " << cv::format(image, cv::Formatter::FMT_NUMPY) << std::endl;// 以python list的方式打印// std::cout << "图片data: " << cv::format(image, cv::Formatter::FMT_PYTHON) << std::endl;// 创建一个灰度图cv::Mat gray;// 转换为灰度图cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);// 保存cv::imwrite("./gray.jpg", gray);return 0;
}

step3:编译

(1)cmake -S . -B build

        可以看到opencv的版本是4.8.1

(2)cmake --build build

        编译好的可执行文件在build目录下:opencv_test

(3)mv ./build/opencv_test ./

(4)./opencv_test

5.结尾      

         到此,RK3588安装新版的Opencv和C++调用opencv就完成了,之前是熟悉python,现在C++版本的内容慢点开始学习吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313965.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神秘的Cookie和Session

Cookie 1.Cookie是什么&#xff1f; Cookie是浏览器提供的持久化储存数据的方式。 2.从哪里来&#xff1f; Cookie从服务器中来&#xff0c;存储到客户端中。一个客户端就对应着一个浏览器。 服务器代码中决定了什么样的数据会储存到客户端中&#xff0c;通过HTTP相应的Se…

常见位运算模板方法总结(包含五道例题)

哈喽大家好&#xff0c;今天博主给大家带来算法基础常见位运算的模板&#xff0c;可以说大家遇到的百分之九十与位运算有关的题都可以用得上。话不多上我们上干货&#xff1a; 一.基础位运算符 << 左移运算符 >> 右移运算符 ~ 取反 & 与运算 | …

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈

深入浅出图解C#堆与栈 C# HeapingVS Stacking第一节 理解堆与栈 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.csdn.n…

Leetcode每日一题周汇总 (12.24-12.30)

Leetcode每日一题周汇总 (12.24-12.30) 1.Sunday (12.24) 题目链接&#xff1a;1954. 收集足够苹果的最小花园周长 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个用无限二维网格表示的花园&#xff0c;每一个 整数坐标处都有一棵苹果树。整数坐标…

消息中间件常见知识点

一&#xff1a;消息队列的主要作用是什么&#xff1f; 1.消息队列的特性&#xff1a; 业务无关&#xff0c;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务

ROS2节点通信之话题与服务点 引言1 理解从通信开始1.1 TCP&#xff08;传输控制协议&#xff09;1.2 UDP&#xff08;用户数据报协议&#xff09;1.3 基于共享内存的IPC方式 2 ROS2话题2.1 ROS2话题指令2.2 话题之RCLPY实现2.2.1 编写发布者2.2 2 编写订阅者2.2.3 运行测试 3 R…

一骑绝尘!维乐携手骑行侠客轻风逆旅带你解锁冬日逆旅

是逆风冬旅还是冻旅&#xff1f;冬日似乎都被骑友们默认做事应该闭关闭的时间了&#xff0c;空气中萧瑟的寒风仿佛是穿透我们的骨膜&#xff0c;当我还在路上瑟瑟发抖的时候&#xff0c;此时一位公路骑行侠正在开启他的冬日旅途~      以下是来自他的自诉&#xff1a;   …

Codeforces Round 900 (Div. 3)(A-F)

比赛链接 : Dashboard - Codeforces Round 900 (Div. 3) - Codeforces A. How Much Does Daytona Cost? 题面 : 思路 : 在序列中只要找到k&#xff0c;就返回true ; 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

easyx的窗口函数

文章目录 前言一、EasyX的颜色二、EasyX的坐标和设备1&#xff0c;EasyX的坐标2&#xff0c;EasyX的设备 三、窗口函数1&#xff0c;初始化窗口函数2&#xff0c;关闭绘图窗口3&#xff0c;设置窗口背景板颜色4&#xff0c;清空绘图设备 前言 easyx是针对c的图形库&#xff0c;…

2023总结与展望--Empirefree

今年一篇博客都没写过了&#xff0c;好像完全在忙在工作和生活上面了&#xff0c;珍惜自我&#xff0c;保持热情&#xff0c;2024对我好点 文章目录 &#x1f525;1. 年终总结1.1.学习工作计划1.2. 生活计划1.3 个人总结 &#x1f525;2. 未来展望 &#x1f525;1. 年终总结 1…

爬虫基础一(持续更新)

爬虫概念&#xff1a; 通过编写程序&#xff0c;模拟浏览器上网&#xff0c;然后让其去互联网上抓取数据的过程 分类&#xff1a; 1&#xff0c;通用爬虫&#xff1a;抓取一整张页面数据 2&#xff0c;聚焦爬虫&#xff1a;抓取页面中的局部内容 3&#xff0c;增量式爬虫&…

Unity 新版 Meta XR SDK 无法导入解决方法

文章目录 &#x1f4d5;教程说明&#x1f4d5;新版 SDK 说明&#x1f4d5;从 Meta 官网导入开发包⭐依赖包⭐如何导入⭐导入后包存放在哪里了&#xff1f;⭐场景样例文件去哪了&#xff1f; 此教程相关的详细教案&#xff0c;文档&#xff0c;思维导图和工程文件会放入 Spatia…