【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的库文件


相关文章
|
6天前
|
消息中间件 运维 监控
Linux命令lsipc:深入解析与实战应用
`lsipc` (通常指 `ipcs`) 是Linux命令,用于查看系统中的IPC资源,包括消息队列、信号量和共享内存。它显示详细信息,支持过滤,并且需要相应权限。示例用法:显示共享内存(`-m`)、查询消息队列(`-q -i ID`)、查看关联进程(`-m -p`)。注意权限、操作影响及定期监控。结合`ipcrm`等工具可进行更深入管理。
|
2天前
|
NoSQL Linux 程序员
Linux objdump命令:深入解析与实战应用
`objdump`是Linux下的反汇编工具,用于将二进制文件转换为汇编代码,便于理解程序底层。它可以反汇编目标文件、可执行文件和库,支持多种参数,如显示符号表(-t)、反汇编代码(-d)、源代码与汇编混合视图(-S)。在实践中,结合-g编译选项和特定段(-j)反汇编,能辅助调试和分析。使用时注意包含调试信息,选择适当参数,并与其他工具(如gdb)配合使用。
|
6天前
|
数据挖掘 Linux 数据处理
探索Linux下的Lua命令:轻量级脚本语言在数据处理和分析中的应用
**探索Linux上的Lua:轻量级脚本语言用于数据处理。Lua通过命令行解释器执行,适用于游戏开发、数据分析及自动化。特点包括小巧、高效、可扩展和动态类型。使用`lua`或`luajit`,配合-e、-l、-i参数执行脚本或互动模式。示例:执行`hello.lua`脚本打印&quot;Hello, Lua!&quot;。最佳实践涉及版本兼容、性能优化、使用C API、测试和文档编写。**
|
7天前
|
存储 Linux 数据处理
Linux中的link命令:深入解析与实际应用
**Linux的`ln`命令详解:创建硬链接和软链接。硬链接共享相同inode,不占额外空间;软链接(符号链接)如快捷方式,可跨文件系统。使用`-s`创建软链接,`-f`强制覆盖。注意选择合适链接类型,避免循环链接,确保目标存在。**
|
8天前
|
Unix Linux 异构计算
用于实时 Linux® 的 TwinCAT Runtime,基于 Linux® 的实时控制器开辟了新的应用可能性
**TwinCAT Runtime for Linux®** 打开了倍福实时控制的新领域,支持在同一PC上运行多个独立实例,促进硬件整合和效率提升。基于Debian的定制Linux发行版,内置实时内核,允许GPU驱动的高速应用如机器视觉。利用Docker等容器技术,实现模块化控制和资源优化,降低工程成本。此发行版将逐步扩展到更多倍福设备,为Linux用户提供熟悉的TwinCAT编程环境和增强的灵活性。
|
1天前
|
Linux Windows
windows和linux安装Erlang
windows和linux安装Erlang
13 0
|
5天前
|
网络协议 Linux 编译器
【原创】EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统移植指南
EtherCAT主站方案对比:商业的如Acontis、TwinCAT3和开源的igh、SOEM。SOEM易移植但功能和实时性不足,适合简单应用;igh功能强大,实时性能优秀,基于内核态,适合复杂场景。igh能移植到其他RTOS,但需克服多任务无调度的挑战。依赖操作系统服务如定时器、内存分配,适合Linux内核,但移植到裸机复杂。
|
7天前
|
应用服务中间件 Linux 网络安全
PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
在Azure App Service for Linux上部署的PHP应用遇到上传文件超过1MB时出现413 Request Entity Too Large错误的解决之法
|
7天前
|
Linux 数据处理
Linux中的localectl命令:深入了解与应用
`localectl`是Linux中用于管理区域设置的`systemd`工具,涉及日期、时间、货币格式等。它通过修改配置文件调整系统本地化,并确保数据处理工具的正确运行。主要功能包括列出所有区域设置(`list-locales`)、设置主区域(如`set-locale LANG=en_US.UTF-8`)和查看当前状态。使用时注意理解区域设置差异,备份配置,测试设置效果,并保持系统一致性。查阅文档以获取更多操作详情。
|
7天前
|
Linux 数据处理
Linux中的setarch命令:深入探索与实际应用
`setarch`是Linux中用于调整程序执行环境的命令,允许在不同CPU架构或功能标志之间切换,支持跨架构运行二进制文件和测试程序兼容性。它通过设置`PERSONALITY`标志改变指令集解释方式。关键参数包括指定架构(-a)和设置CPU功能标志(-R)。在实际应用中,如需在32位模式下运行64位程序,可以使用`setarch i386 &lt;command&gt;`。使用时注意程序需求、测试验证,避免滥用,并在必要时备份。查阅文档以获取详细信息。