【opencv】opencv在windows和linux的应用

简介: 【opencv】opencv在windows和linux的应用

Opencv

opencv是一个开源的图形图像处理工具,具有对图像进行数学建模,对其进行一系列的处理,为图像的识别和训练做准备。

1、使用

(1)在相应的平台用对应的工具编译opencv的源码。

1)linux平台

配置–安装–编译

2)windows平台

CMake

编译会生成的目录包括:库文件、头文件、命令文件、工具文件…

windows 64位-----------------------opencv64.zip

arm-linux------------------------------opencv-3.4.4.arm.tar.bz2

(2)如何在windows的QT中使用opencv

1)解压opencv64.zip到工程源代码目录

2)将opencv的头文件路径、库文件路径、可执行程序路径加入到QT工程中

①在pro文件中添加头文件路径:

INCLUDEPATH += E:\GZ2142\11-Qt\code\s_project\MyWinOpencv\opencv64\include
INCLUDEPATH += E:\GZ2142\11-Qt\code\s_project\MyWinOpencv\opencv64\include\opencv
INCLUDEPATH += E:\GZ2142\11-Qt\code\s_project\MyWinOpencv\opencv64\include\opencv2

②在pro文件中添加库文件路径

LIBS += E:\GZ2142\11-Qt\code\s_project\MyWinOpencv\opencv64\x64\mingw\lib\libopencv*

如下图:

③添加运行时命令的路径

1、直接将可执行程序的路径加入到系统环境变量path中

步骤:【此电脑】-》【属性】-》【高级系统设置】-》【环境变量】-》【新建】

2、只修改本工程的path路径,添加

E:\GZ2142\11-Qt\code\s_project\MyWinOpencv\opencv64\x64\mingw\bin

3)使用opencv显示图片和视频

测试代码:

#include "mywinopencv.h"

#include <QApplication>
#include <opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>

using namespace cv;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

#if 0
    //使用opencv显示一张图片
    Mat myimage = imread("E:/GZ2142/11-Qt/code/s_day05/1.jpg");
    imshow("Image",myimage);
    //等待
    waitKey(10);
#else
    Mat myimage;
    //获取摄像头
    VideoCapture video(0);
    //显示
    while(1){
        //获取一帧
        video>>myimage;
        //显示一帧
        imshow("Video",myimage);
        //延时
        waitKey(1);
    }

#endif

    MyWinOpencv w;
    w.show();
    return a.exec();
}

运行结果:

显示图片:

(3)在arm-linux中使用opencv


1)解压opencv-3.4.4.arm.tar.bz2到Ubuntu的/opt目录下

2)在工程文件中添加头文件和库文件路径

INCLUDEPATH += /opt/opencv/include
INCLUDEPATH += /opt/opencv/include/opencv
INCLUDEPATH += /opt/opencv/include/opencv2

LIBS += -L/opt/opencv/lib -lopencv_calib3d -lopencv_core -lopencv_dnn -lopencv_face \
        -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs \
        -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo \
        -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videoio \
        -lopencv_video -lopencv_videostab


3)编写代码然后交叉编译,在开发板上运行

#include "myarmopencv.h"

#include <QApplication>
#include <opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>

using namespace cv;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Mat myimage;

    MyArmOpencv w;
    w.show();
    return a.exec();
}


4)将opencv的所有库文件拷贝到开发板的某个目录,并且设置LD_LIBRARY_PATH环境变量(程序运行时动态库的搜索路径)。



export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/Even/opencv/lib

.

opencv的可执行程序的…/…/lib目录必须放上opencv的库文件


相关文章
|
18天前
|
安全 Linux
Linux通配符及其在文件搜索和管理中的应用
Linux通配符及其在文件搜索和管理中的应用
|
17天前
|
Linux Windows
Linux01---目录结构,Linux系统下只有一个最顶级的树/,Windows系统有盘符概念,而Linux系统没有盘符概念,整个系统都在/根目录下,Linux 系统写法 /user/local
Linux01---目录结构,Linux系统下只有一个最顶级的树/,Windows系统有盘符概念,而Linux系统没有盘符概念,整个系统都在/根目录下,Linux 系统写法 /user/local
|
2天前
|
Java Linux 应用服务中间件
Windows和Linux的最佳Web服务器
【7月更文挑战第20天】Windows和Linux的最佳Web服务器
9 3
|
8天前
|
监控 安全 Linux
Linux命令ssltap的深入解析与应用实践
`ssltap`是一个假想的Linux命令,用于模拟SSL/TLS流量分析。它捕获、解密(如果有密钥)并分析加密流量,提供实时监控、协议解析和安全审计。特点包括实时性、灵活性、可扩展性和安全性。示例用法包括捕获特定端口流量和实时监控会话状态。在实际操作中应注意私钥安全、性能影响及合规性,建议定期审计和自动化监控。
|
11天前
|
Windows
【Windows】 Win10下报错:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联
【Windows】 Win10下报错:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联
69 1
|
14天前
|
存储 数据管理 Linux
Linux命令sg的深入解析与应用
**Linux的`sg`命令用于高效管理SCSI设备,它基于DMA和Scatter-Gather技术,提供直接设备控制和高效数据传输。`sg`常通过`sg3_utils`工具集来使用,例如`sg_io`,用于执行SCSI命令。在实际应用中,需注意权限、数据安全和兼容性问题,遵循备份、详细阅读文档和逐步测试的最佳实践。**
|
17天前
|
缓存 网络协议 算法
【Linux系统编程】深入剖析:四大IO模型机制与应用(阻塞、非阻塞、多路复用、信号驱动IO 全解读)
在Linux环境下,主要存在四种IO模型,它们分别是阻塞IO(Blocking IO)、非阻塞IO(Non-blocking IO)、IO多路复用(I/O Multiplexing)和异步IO(Asynchronous IO)。下面我将逐一介绍这些模型的定义:
|
19天前
|
安全 数据挖掘 Linux
Linux命令repotrack的详解与应用
在Linux系统中,软件包管理是一项至关重要的任务,尤其是在没有网络连接或需要离线安装软件包的场景中。`repotrack`命令就是这样一个强大的工具,它帮助用户下载RPM包及其所有依赖项,从而简化了离线安装的过程。本文将详细介绍`repotrack`命令,包括其定义、工作原理、主要特点、使用示例以及最佳实践。
|
20天前
|
数据可视化 安全 Linux
探索Linux命令repo-graph:深入解析与应用实践
`repo-graph`是Linux的Yum-utils工具,用于可视化仓库中软件包的依赖关系,简化复杂网络管理。它通过分析元数据生成图形,支持自定义输出格式和特定包分析。例如,`repo-graph --repoid=updates`显示更新仓库的依赖,而`--packages=httpd`则专注httpd包。注意权限、复杂性和选择合适输出格式。定期分析和图形化展示是最佳实践。
|
17天前
|
Linux 数据处理
Linux命令setarch深度解析与实际应用
`setarch`是Linux下用于调整程序执行环境的命令,它允许在不同CPU架构间运行二进制文件,模拟架构并设置CPU功能标志。通过指定`-a`参数切换架构,如`-a i386`,用`-R`参数启用或禁用如SSE2的功能。在测试兼容性、调试和优化时非常有用。注意正确设置参数,避免滥用,确保程序正常运行。查阅文档、逐步测试和考虑兼容性是最佳实践。