当前位置: 首页 > news >正文

ubuntu编译安装并测试opencv

  1. 下载opencv工程
git clone https://github.com/opencv/opencv.git
git -C opencv checkout 4.x
  1. 构建并编译opencv
  • 在build目录下使用cmake构建生成makefile
cd opencv
mkdir -p build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_FFMPEG=ON ..                
  • 在build目录下使用make编译opencv
make -j8
  1. 在build目录下安装opencv
sudo make install
  1. 配置环境
  • 配置环境变量:PKG_CONFIG_PATH
    • 查找opencv4.pc的位置
    sudo find / -iname opencv4.pc
    
    • 切换到用户目录下,并创建pkgconfig.sh
    cd ~
    sudo vim /etc/profile.d/pkgconfig.sh
    
    • 将opencv4.pc的路径添加到环境变量PKG_CONFIG_PATH中
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    
    • 使环境变量生效
    source /etc/profile
    
  • 配置Opencv的动态库环境
    sudo vim /etc/ld.so.conf.d/opencv4.conf
    
    在下面添加一行
    /usr/local/lib
    
    让环境变量生效
    source ldconfig
    
  1. 测试安装及配置是否成功
cd opencv/samples/cpp/example_camke
make
./opencv_example
  1. 通过cmake和gcc来构建c/c++程序调用OpenCV
  • 在home目录下新建一个文件夹W_CPP,
  • 在W_CPP文件夹下写一个test.cc程序,如下:
#include <iostream>
using std::cout;
using std::endl;
#include <opencv2/opencv.hpp>
using namespace cv;int main(int argc, vhar** argv){if(argc != 2){cout << "usage:DispalyImage.out <Image_Path>\n" << endl;return -1;}Mat image;image = imread(argv[1], IMREAD_COLOR);if(!image.data){cout << "No image data \n" << endl;return -1;}namedWindow("Display Image",WINDOW_AUTOSIZE);imshow("Display Image",image);WaitKey(0);return 0;}
  • 在同一文件夹下写一个CMakeLists.txt,如下
# cmake needs this line
cmake_minimum_required(VERSION 3.10)
# Define project name
project(W_CPP)
# 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)
# 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}")
# set "-std=c++11"
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)# Add OpenCV headers location to your include paths
# include_directories(${OpenCV_INCLUDE_DIRS})# Declare the executable target built from your sources
add_executable(test test.cc)
# Link your application with OpenCV libraries
target_link_libraries(test PRIVATE ${OpenCV_LIBS})
  • 在同一文件夹下放一张图片,比如 shen.png
  • 命令行切换到W_CPP目录下,创建build文件夹并进入build目录,依次执行以下命令
mkdir -p build
cd build
cmake ..make
./test shen.png

参考博客:

Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV

相关文章:

ubuntu编译安装并测试opencv

下载opencv工程 git clone https://github.com/opencv/opencv.git git -C opencv checkout 4.x构建并编译opencv 在build目录下使用cmake构建生成makefile cd opencv mkdir -p build && cd build cmake -D CMAKE_BUILD_TYPERelease -D OPENCV_GENERATE_PKGCONFIGON …...

Vue3最佳实践 第七章 TypeScript 上

​ 在浏览网上的JavaScript相关文档时&#xff0c;大家可能已经注意到了一个趋势&#xff1a;越来越多的项目和教程都采用了TypeScript编写代码。对于那些没有TypeScript经验的人来说&#xff0c;阅读这些由TypeScript编写的代码可能会感到有些压力。   ​Vue3的出现无疑加剧…...

【maven私库nexus开机自启动】

linux设置nexus开机自启动_linux centos maven私服nexus安装搭建并设置开机启动 linux centos maven私服nexus安装搭建并设置开机启动&#xff0c;这里是用添加服务的方式开机启动nexus。 1.先要下载jdk并安装&#xff0c;配置java环境变量&#xff0c;直接去oracle下载把&am…...

ctfshow-web5(md5弱比较)

打开题目链接是html和php代码 html没啥有用信息&#xff0c;这里审一下php代码 &#xff1a; 要求使用get方式传入两个参数 v1&#xff0c;v2 ctype_alpha()函数&#xff1a;用于检查给定的字符串是否仅包含字母&#xff1b; is_numeric()函数&#xff1a;检测字符串是否只由…...

【GIT版本控制】--子模块

一、创建与管理子模块 Git 子模块允许你在一个 Git 仓库中引用另一个仓库。这对于在一个项目中使用其他项目的特定版本非常有用。以下是创建和管理 Git 子模块的基本步骤&#xff1a; 添加子模块&#xff1a;在父仓库的根目录中&#xff0c;使用以下命令添加子模块&#xff1…...

享元模式 基于享元模式的对象池设计与开发应用(设计模式与开发实践 P12)

文章目录 反例应用对象池对象池应用 享元模式&#xff08;flyweight&#xff09;是一种进行性能优化的模式&#xff0c;通过共享技术来支持大量细粒度的对象 如果系统中创建了大量相似的对象&#xff0c;我们就可以通过享元模式节省内存 反例 服装厂生产了一堆衣服&#xff…...

postman测试文件上传接口教程

postman是一个很好的接口测试软件&#xff0c;有时候接口是Get请求方式的&#xff0c;肯定在浏览器都可以测了&#xff0c;不过对于比较规范的RestFul接口&#xff0c;限定了只能post请求的&#xff0c;那你只能通过工具来测了&#xff0c;浏览器只能支持get请求的接口&#xf…...

【bug日记】spring项目使用配置类和测试类操作数据库

最近学校课程要求使用spring操作数据库&#xff0c;时间有点久了&#xff0c;操作都不太熟悉了&#xff0c;遇到了很多坑&#xff0c;特此记录一下。 导入依赖 <!-- Spring Framework --> <dependency><groupId>org.springframework</groupId><ar…...

Django之主键外键详解

在ORM操作处了解的文章中&#xff0c;我们已经初步接触到了主键与外键的字段定义&#xff0c;那么本文以详细介绍主键外键的使用方法等 1.外键 在Django中&#xff0c;外键是一种关系字段&#xff0c;用于建立不同模型之间的关联关系。外键字段允许一个模型引用另一个模型的主…...

HDLbits: ece241 2014 q7b

题目要求用10进制的BCD计数器来构造1000计数&#xff0c;其实也是将1000hz的时钟信号改造成1hz&#xff0c;我们首先计算出10的三次方等于1000&#xff0c;需要三个10进制的计数器&#xff0c;去计999的中高低位。 最低位的计数器一直在对时钟信号计数&#xff0c;因此enable1…...

C++多态的理解

C多态的理解 1 C多态的概念2 C多态的类型3 虚函数实现多态案例分析3.1 非虚函数成员函数调用的案例3.1.1 测试代码3.1.2 测试运行结果 3.2 虚函数成员函数调用案例3.2.1 虚函数实现测试代码3.2.2 测试运行结果 3.3 基类析构函数的实现3.3.1 析构函数定义和实现案例3.3.2 基类析…...

关于深拷贝和浅拷贝你需要了解的内容

深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#xff09;是在复制对象或数据结构时使用的两种不同的策略&#xff0c;它们的主要区别在于复制后新旧对象之间的关系以及对嵌套对象的处理方式。 浅拷贝&#xff1a; 浅拷贝创建一个新对象&#xff…...

Visual Studio自定义模板参数、备注

模板路径&#xff1a; VS2022 x64&#xff1a;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ItemTemplatesVS2022 x86&#xff1a;C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ItemTemplates 一、声明和启用模板…...

机器学习-数值特征

离散值处理 import pandas as pd import numpy as npvg_df pd.read_csv(datasets/vgsales.csv, encoding "ISO-8859-1") vg_df[[Name, Platform, Year, Genre, Publisher]].iloc[1:7]NamePlatformYearGenrePublisher1Super Mario Bros.NES1985.0PlatformNintendo2…...

Rocky(centos)安装nginx并设置开机自启

一、安装nginx 1、安装依赖 yum install -y gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel 2、去官网下载最新的稳定版nginx nginx: downloadhttp://nginx.org/en/download.html 3、将下载后的nginx上传至/usr/local下 或者执行 #2023-10-8更新 cd /usr/…...

Android约束布局ConstraintLayout的Guideline,CardView

Android约束布局ConstraintLayout的Guideline&#xff0c;CardView <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:a…...

LVGL8.3.6 Flex(弹性布局)

使用lv_obj_set_flex_flow(obj, flex_flow)函数 横向拖动 LV_FLEX_FLOW_ROW 将子元素排成一排而不包裹 LV_FLEX_FLOW_ROW_WRAP 将孩子排成一排并包裹起来 LV_FLEX_FLOW_ROW_REVERSE 将子元素排成一行而不换行&#xff0c;但顺序相反 LV_FLEX_FLOW_ROW_WRAP_REVERSE 将子元素…...

计算机算法分析与设计(8)---图像压缩动态规划算法(含C++)代码

文章目录 一、知识概述1.1 问题描述1.2 算法思想1.3 算法设计1.4 例题分析 二、代码 一、知识概述 1.1 问题描述 1. 一幅图像的由很多个像素点构成&#xff0c;像素点越多分辨率越高&#xff0c;像素的灰度值范围为0~255&#xff0c;也就是需要8bit来存储一个像素的灰度值信息…...

React 状态管理 - Mobx 入门(上)

Mobx是另一款优秀的状态管理方案 【让我们未来多一种状态管理选型】 响应式状态管理工具 扩展学习资料 名称 链接 备注 mobx 文档 1. MobX 介绍 MobX 中文文档 mobx https://medium.com/Zwenza/how-to-persist-your-mobx-state-4b48b3834a41 英文 Mobx核心概念 M…...

OLED透明屏技术在智能手机、汽车和广告领域的市场前景

OLED透明屏技术作为一种新型的显示技术&#xff0c;具有高透明度、触摸和手势交互、高画质和图像显示效果等优势&#xff0c;引起了广泛的关注。 随着智能手机、汽车和广告等行业的快速发展&#xff0c;OLED透明屏技术也在这些领域得到了广泛的应用。 本文将介绍OLED透明屏技…...

别再写一堆CASE WHEN了!PostgreSQL里COALESCE和NULLIF这两个函数,帮你把SQL写得又短又稳

告别冗长SQL&#xff1a;用PostgreSQL的COALESCE和NULLIF重构条件逻辑 在数据处理的世界里&#xff0c;SQL就像是我们与数据库对话的语言。但你是否经常遇到这样的情况&#xff1a;为了处理各种空值和边界条件&#xff0c;你的SQL查询变成了一个由无数CASE WHEN语句组成的庞然大…...

当AI开始检测自身缺陷:测试工具失控的风险与应对

在软件测试领域&#xff0c;AI正从辅助工具向核心角色转变。2026年的测试场景中&#xff0c;AI不仅能自动生成测试用例、自我修复失效选择器&#xff0c;还能以人眼精度完成视觉回归检测。这些能力让测试工程师从繁琐的重复劳动中解放出来&#xff0c;将精力聚焦于业务逻辑与边…...

保姆级教程:在NVIDIA TX1上搞定万集WLR-716激光雷达的ROS驱动与RVIZ可视化

保姆级教程&#xff1a;在NVIDIA TX1上搞定万集WLR-716激光雷达的ROS驱动与RVIZ可视化 当机器人开发者第一次拿到万集WLR-716激光雷达和NVIDIA Jetson TX1开发板时&#xff0c;最迫切的需求就是快速搭建测试环境&#xff0c;验证硬件功能。本文将提供一份从零开始的详细指南&am…...

基于MCP协议的本地代码历史管理工具:无感备份与即时回溯

1. 项目概述&#xff1a;一个为开发者打造的“时光机”如果你是一名开发者&#xff0c;大概率经历过这样的场景&#xff1a;在调试一个复杂功能时&#xff0c;你反复修改了一段代码&#xff0c;运行、测试、再修改……几个小时后&#xff0c;你突然意识到&#xff0c;两个小时前…...

构建交互式工程实验场:从算法可视化到技术原型设计

1. 项目概述&#xff1a;一个交互式工程实验场的诞生 如果你和我一样&#xff0c;是个喜欢在代码里“瞎折腾”的工程师&#xff0c;那你肯定也经历过这样的场景&#xff1a;脑子里突然蹦出一个关于算法、数据结构或者某个系统设计的奇思妙想&#xff0c;想快速验证一下。这时候…...

如何彻底释放惠普OMEN游戏本性能:终极免费硬件控制工具指南

如何彻底释放惠普OMEN游戏本性能&#xff1a;终极免费硬件控制工具指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软件臃肿…...

Linux内核安全加固:从编译配置构建系统防护基石

1. 项目概述&#xff1a;为什么我们需要关注内核安全配置&#xff1f;在服务器运维、嵌入式开发或者安全研究领域待久了&#xff0c;你可能会发现一个现象&#xff1a;很多系统被攻破&#xff0c;根源并不在于某个惊天动地的零日漏洞&#xff0c;而在于内核配置本身就没“锁好门…...

Kubernetes轻量级服务网格Cetus:核心流量治理与Sidecar代理实践

1. 项目概述&#xff1a;一个为Kubernetes而生的智能代理如果你正在管理一个规模不小的Kubernetes集群&#xff0c;并且对服务网格&#xff08;Service Mesh&#xff09;的复杂性望而却步&#xff0c;或者觉得像Istio这样的“巨无霸”方案有些杀鸡用牛刀&#xff0c;那么你很可…...

拆解进销存流程的5大核心功能,手把手教你规范企业的进销存流程

在现代企业的数字化管理中&#xff0c;规范进销存流程是提升运营效率、降低管理成本的关键所在。一个科学、严谨的进销存流程不仅能帮助企业实现采购、销售与库存数据的实时同步&#xff0c;还能有效解决账实不符、库存积压等长期痛点。本文将深入拆解进销存流程中的5大核心功能…...

基于Arduino与GPS的物联网数据采集器:从硬件搭建到地图可视化

1. 项目概述&#xff1a;一个硬件极客的万圣节“寻宝图” 又到万圣节了&#xff0c;除了琢磨穿什么奇装异服&#xff0c;你是不是也在头疼怎么规划“不给糖就捣蛋”的路线&#xff1f;每年都像开盲盒&#xff0c;有的门口堆满南瓜灯的人家只给了一根棒棒糖&#xff0c;而某个其…...