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

news2024/11/26 12:36:17

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 ndarray
    cv::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.coloradmin.cn/o/1342805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HALCON报错#2021:System clock has been set back 解决方案

如果操作系统修改过时间&#xff0c;再更新到正常的时间后&#xff0c;打开halcon可能会报错#2021&#xff1a;System clock has been set back. 解决方案&#xff1a; 1、联网同步Windows 系统时间。 2、检查以下目录中是否有超过当前时间的文件&#xff08;删除&#xff09…

Java2023

文章目录 DOS系统正则表达式原理对象和类IDEA快捷键单例设计模式final关键字final使用注意事项抽象类接口内部类局部内部类(有类名)匿名内部类(无类名)★★成员内部类静态内部类枚举类型的使用Annotation注解异常try-catchthrows自定义异常十三章 包装类String 类的常用方法…

Prometheus 14 点实践经验分享

这是 2017 年的 promcon 的分享&#xff0c;原文地址在这里&#xff0c;作者 Julius Volz&#xff0c;今天偶然看到&#xff0c;虽然已经过去 6 年&#xff0c;有些实践经验还是非常值得学习。做个意译&#xff0c;加入一些自己的理解&#xff0c;分享给大家。 埋点方面 1. 所…

腾讯经典面试题-如何做一个迷你版的微信抢红包呢?

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

9个简单有效的用户需求分析方法,让你的产品更符合用户心理预期

作为一名互联网产品经理&#xff0c;需求分析是我们工作中最为重要的环节之一。正确地理解用户需求&#xff0c;为用户提供更好的产品体验&#xff0c;是我们的首要任务。以下是一些关于如何做好需求分析的建议&#xff0c;希望对大家有所帮助。 了解用户 在需求分析的过程中&a…

羊大师讲解,羊奶怎么加热才不容易破坏营养

羊大师讲解&#xff0c;羊奶怎么加热才不容易破坏营养 随着人们对健康饮食的重视&#xff0c;越来越多的人开始选择羊奶作为补充营养的饮品。在加热羊奶的过程中&#xff0c;如果方法不当&#xff0c;很容易造成营养价值的损失。那么&#xff0c;如何加热羊奶才能最大程度地保…

腾讯云轻量应用服务器性能差吗?

腾讯云轻量应用服务器性能如何&#xff1f;轻量服务器CPU采用什么型号&#xff1f;处理器计算性能如何&#xff1f;轻量应用服务器会不会比云服务器CVM性能差&#xff1f;腾讯云服务器网txyfwq.com详解轻量CPU型号主频、处理器性能、内存、公网带宽、月流量、不同地域速度测试、…

共享单车之租赁需求预估

文章目录 第1关&#xff1a;数据探索与可视化第2关&#xff1a;特征工程第3关&#xff1a;租赁需求预估 第1关&#xff1a;数据探索与可视化 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 读取数据 数据探索与可视化 读取数据 数据保存在./step1/bike_train…

Gooxi受邀出席操作系统与AI技术应用实践沙龙·OC城市行·深圳站活动

2023年是大模型元年&#xff0c;国内诸多AI、互联网公司争先恐后加码投入“练模”。AI产业快速发展行业高速运转&#xff0c;业内人称这是继蒸汽机、计算机之后开启新一轮科技革命的技术。但AI大模型是一个资本密集、人才密集和数据密集的产业&#xff0c;如何促进AI大模型落地…

Java之程序、进程、线程、管程和并发、并行的概念

文章目录 1. 进程与线程1.1 程序1.2 进程1.3 线程1.4 管程 2.并行与并发2.1 并发2.2 并行 1. 进程与线程 1.1 程序 程序是指令和数据的有序集合&#xff0c;其本身没有任何运行的含义&#xff0c;是一个静态的概念。简单的说就是我们写的代码。 1.2 进程 &#xff08;1&…

05-认证服务中多种认证方式的实现

多种认证方式 统一认证入口 目前各大网站支持账号密码认证、手机验证码认证、扫码登录认证等多种认证方式,Spring Security框架也支持多样化的认证方案 账号和密码认证: 采用OAuth2协议的密码模式即可实现手机号加验证码认证: 用户认证提交的是手机号和验证码并不是账号和密…

软件测试/测试开发丨Windows Appium环境搭建

windows 版本 Appium 环境搭建 安装 nodejs 下载.msi文件 https://nodejs.org/en/download/ 注意&#xff1a; 1、下载12.*版本双击安装即可。 2、无须配置环境变量,直接重启一个 cmd 输入下面的命令&#xff0c;能够查看这两个版本号即安装成功。 安装 appium desktop 直…

如何在Docker环境下安装火狐浏览器并结合内网穿透工具实现公网访问

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

【LeetCode】修炼之路-0001-Two Sum(两数之和)【python】【简单】

前言 计算机科学作为一门实践性极强的学科,代码能力的培养尤为重要。当前网络上有非常多优秀的前辈分享了LeetCode的最佳算法题解,这对于我们这些初学者来说提供了莫大的帮助,但对于我这种缺乏编程直觉的学习者而言,这往往难以消化吸收。&#xff08;为什么别人就能想出这么优雅…

tcp/ip实现两个手机之间连接同步显示

app主界面 选择一&#xff1a;TCP客户端 选择二&#xff1a;TCP服务端 点击下图item时进入曲线绘制页面 如果是服务器端它不需要连任何设备就可以直接进入绘制界面如果是TCP的话就不能直接进入&#xff0c;否则就会提示未连接网络连接不能放在主线程&#xff0c;页面去调方法&…

Java限流方案常用算法详解 固定时间窗口 滑动时间窗口 漏桶限流 令牌桶限流

前言 为什么要做限流&#xff1f; 服务需要保护自己&#xff0c;以免被太多的请求淹没&#xff08;无论是恶意或无意的&#xff09;&#xff0c;从而保持可用性。 举个生活中的例子&#xff0c;某个景区&#xff0c;平时可能根本没什么人前往&#xff0c;但是一旦到了国庆假日…

Python中的并发编程(7)异步编程

异步编程 Python3.4后新增了asyncio模块&#xff0c;支持异步编程。 异步是在一个线程中通过任务切换的方式让多个任务”同时“进展。asyncio不涉及线程/进程切换&#xff0c;减少了线程/进程创建、上下文切换的开销&#xff0c;更轻量级。 asyncio的核心是事件循环&#xff0…

仓储3代电子标签接口文档-V1.2

电子标签标签注册 通过手动触发电子标签注册到系统&#xff0c;注册成功就可以进行功能测试。 仓储3代注册 方式1:&#xff08;四灯外供电版本标签&#xff09; 标签左测中间按键连按三次 方式2:&#xff08;电池供电版本标签&#xff09; 标签右下角左下角按键&#xff0…

开放网络+私有云=?星融元的私有云承载网络解决方案实例

在全世界范围内的云服务市场上&#xff0c;开放网络一直是一个备受关注的话题。相比于传统供应商的网络设备&#xff0c;开放网络具备软硬件解耦、云原生、可选组件丰富等优势&#xff0c;对云服务商和超大型企业有足够的吸引力。 SONiC作为开源的网络操作系统&#xff0c;使得…

SV接口的驱动和采样_2023.12.27】

cb 使用cloking block进行信号的同步 在cloking block&#xff0c;所有信号的采样和驱动&#xff0c;都是和时钟同步的 clocking cb &#xff08;posedge clk&#xff09;; input grant; output request; endclocking接口同步 用和wait来同步测试平台中的信号 bus.cb; 接口…