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

交叉编译ARM平台的OpenCV1.0

首先,从http://www.opencv.org.cn下载1.0的源码包,然后解压出来,进入解压后的目录,再进行下面的修改:

将configure 文件下列内容注释掉(有两处),只保留GTK_CFLAGS="" 、GTK_LIBS="" 、have_gtk=no 三项内容(如下黑体所示):

# if test "$PKG_CONFIG" = "no" ; then
# echo "*** The pkg-config script could not be found. Make sure it is"
# echo "*** in your path, or set the PKG_CONFIG environment variable"
# echo "*** to the full path to pkg-config."
# echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkgconfig."
# else
# PKG_CONFIG_MIN_VERSION=0.9.0
# if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
# echo "$as_me:$LINENO: checking for \"gtk+-2.0 gdk-pixbuf-2.0\"" >&5
echo $ECHO_N "checking for \"gtk+-2.0 gdk-pixbuf-2.0\"... $ECHO_C" >&6
# if $PKG_CONFIG --exists ""gtk+-2.0 gdk-pixbuf-2.0"" ; then
# echo "$as_me:$LINENO: result: yes" >&5
#echo "${ECHO_T}yes" >&6
# succeeded=yes

# echo "$as_me:$LINENO: checking GTK_CFLAGS" >&5
#echo $ECHO_N "checking GTK_CFLAGS... $ECHO_C" >&6
# GTK_CFLAGS=`$PKG_CONFIG --cflags ""gtk+-2.0 gdk-pixbuf-2.0""`
# echo "$as_me:$LINENO: result: $GTK_CFLAGS" >&5
#echo "${ECHO_T}$GTK_CFLAGS" >&6
#
# echo "$as_me:$LINENO: checking GTK_LIBS" >&5
#echo $ECHO_N "checking GTK_LIBS... $ECHO_C" >&6
# GTK_LIBS=`$PKG_CONFIG --libs ""gtk+-2.0 gdk-pixbuf-2.0""`
# echo "$as_me:$LINENO: result: $GTK_LIBS" >&5
#echo "${ECHO_T}$GTK_LIBS" >&6
# else
GTK_CFLAGS=""
GTK_LIBS=""

## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
# GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors ""gtk+-
2.0 gdk-pixbuf-2.0""`
# fi
# else
# echo "*** Your version of pkg-config is too old. You need version
#$PKG_CONFIG_MIN_VERSION or newer."
# echo "*** See http://www.freedesktop.org/software/pkgconfig"
# fi
# fi
# if test $succeeded = yes; then
# have_gtk=yes
#cat >>confdefs.h <<\_ACEOF
##define HAVE_GTK
#_ACEOF
# else
have_gtk=no
# fi

修改完后进行下面的操作:

安装好交叉编译工具链后再进行如下操作:

./configure --host=arm-linux --prefix=/home/guochongxin/opencv-arm2/ --without-gtk --without-carbon --without-v4l --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig

在命令行里面加入了--without-v4l,因为编译时会出错,还有我暂时不用到v4l,如果你要做摄相头方面的应用,就需要去掉该参数,但编译时会出错,这个问题我也在改进中,有解决方法就会发出来共享.

上面的配置没有把libjpeg编译进去,也不会添加v4l,而配置修改为:

./configure --host=arm-linux --prefix=/home/guochongxin/opencv-arm --without-gtk --without-carbon  --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig  CXX=arm-linux-g++ CPPFLAGS=-I/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include CFLAGS=-I/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include LDFLAGS=-L/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

则在编译到v4l时没有错误提示,也把libjpeg编译进去,因为把libjpeg的路径也通过配置设置进去了,注意libjpeg之前要交叉编译才可以,也注意上面的路径,注意libjpeg库要放到交叉编译工具链的库中.

接下来进行下面的操作:

make
make install

这里会在/home/guochongxin/opencv-arm2/目录下安装编译成功的文件,接下来如果需要编译代码,则需要设置如下的环境变量:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/guochongxin/opencv-arm2/lib/pkgconfig/

编译程序的方法是:

arm-linux-g++ `pkg-config --cflags --libs opencv` source.cpp -o destination

注意上面两个黑点是键盘上左上角波浪号在按下Shift键后输入的,而不是上引号,要区分开来.

上面步骤只是成功后发布出来,可能有小部分有问题,请根据实际情况修改,仅供参考,用到的交叉编译工具链是3.4.5版本的,制作过程在前面的博文有发表出来.

参考资料:《OpenCV 在Liod 开发板的移植及其应用》(华东师范大学电子系嵌入式竞赛组)

相关文章:

交叉编译ARM平台的OpenCV1.0

首先,从http://www.opencv.org.cn下载1.0的源码包,然后解压出来,进入解压后的目录,再进行下面的修改: 将configure 文件下列内容注释掉(有两处)&#xff0c;只保留GTK_CFLAGS"" 、GTK_LIBS"" 、have_gtkno 三项内容&#xff08;如下黑体所示&#xff09;&…...

牛客周赛 Round 56 AK

背景 语言艺术 A题&#xff1a;面包店故事 题意 一块面包要x元&#xff0c;加培根要y元&#xff0c;有n元&#xff0c;问能否买到加培根的面包 思路 大水题&#xff0c;gpt秒了 代码 #include <bits/stdc.h> using namespace std; int main() {int x, y, n; cin …...

LeetCode 热题 HOT 100 (038/100)【宇宙最简单版】

【动态规划】No. 0337 打家劫舍III【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&a…...

SQLALchemy ORM 的关联关系之 ORM 中的一对一

SQLALchemy ORM 的关联关系之 ORM 中的一对一 场景示例实现一对一关系使用 `relationship()` 和外键(FK)插入和查询数据总结在 SQLAlchemy ORM 中,一对一(One-to-One)关联关系是一种比较少见的模型关系,但它确实有其应用场景,特别是在你需要将一个对象与另一个对象紧密绑…...

模型部署 - docker

docker简介 Docker 是一种开源的容器化平台&#xff0c;允许开发者将应用程序及其依赖项打包到一个标准化的单元中&#xff0c;称为“容器”。这些容器可以在任何支持 Docker 的系统上运行&#xff0c;无需担心环境差异。 为什么需要 Docker&#xff1f; 在传统的开发中&…...

学懂C++(三十四):深入详解 C++ 高级多线程编程技术中的并发设计模式

引言 在现代软件开发中&#xff0c;多线程编程已成为提升性能和响应能力的重要手段。设计模式为解决并发问题提供了有效的解决方案。本文将探讨常见的并发设计模式&#xff0c;包括生产者-消费者模式、读者-写者模式、单例模式、帧-工作者模式以及Future-Task模式&#xff0c;并…...

大数据产业链图谱_产业链全景图_大数据行业市场分析

数据作为新型生产要素&#xff0c;是数字化、网络化、智能化的基础&#xff0c;已快速融入生产、分配、流通、消费和社会服务管理等各环节&#xff0c;影响着千行百业&#xff0c;推动着我国数字经济的蓬勃发展。 大数据又称巨量数据、海量数据&#xff0c;是由数量巨大、结构…...

photonserver 部署相关教程

Photon Server 是 Exit Games 开发的高性能、可扩展的多人游戏服务器框架。部署 Photon Server 需要一些基础的服务器管理知识和配置技巧。以下是一个基本的部署教程&#xff0c;帮助你将 Photon Server 部署在 Windows 服务器上。 目录 1. 下载并安装 Photon Server 2. 配置…...

GEE训练:sentinel-1数据的投影、显示和导出

函数 projection() Returns the default projection of an Image. Throws an error if the bands of the image dont all have the same projection. 返回图像的默认投影。如果图像带的投影不一致,则会抛出错误。 Arguments: this:image (Image): The image from which …...

后端学习笔记(七)--MyBatis参数传递

5.MyBatis参数传递 ​ *MyBatis接口方法中可以接收各种各样的参数&#xff0c;MyBatis底层对于这些参数进行不同的封装处理方式 ​ *单个参数&#xff1a; 1.POJO类型&#xff1a;直接使用&#xff0c;属性名和参数占位符名称一致 2.Map集合&#xff1a;直接使用&#xff0c;…...

uniapp 网络请求自动处理loading

文章目录 背景整理思路V1版本V2版本V3版本 背景 最近在写uniapp&#xff0c;发现执行网络请求的时候经常要处理Loading效果。 比如&#xff0c;在发送网络请求之前&#xff0c;触发Loadng&#xff1b;无论请求成功还是失败都要关闭Loading&#xff1b;请求失败的时候我们还要…...

【Solidity】函数的使用

构造函数 构造函数仅在部署合约时调用一次&#xff0c;它的作用主要是初始化一些状态变量。 contract Demo {address public owner;uint public num;constructor(uint _num) {owner msg.sender;num _num;} }函数装饰器 函数装饰器可以在函数执行之前或之后插入代码逻辑&am…...

详解golang内存管理

介绍 要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。 操作系统内存管理 其实现在计算机内存管理的方式都是…...

C++ 线程 一些同步方式

C 线程一些同步方式 1.互斥锁&#xff08;Mutex&#xff09;2. 读写锁&#xff08;Reader-Writer Lock&#xff09;3. 信号量&#xff08;Semaphore&#xff09;4. 原子操作&#xff08;Atomic&#xff09;5. 屏障&#xff08;Barrier&#xff09;6. 条件变量&#xff08;Condi…...

【开发语言】编译型语言和解释性语言有啥区别?

作为一名从业多年的程序员,对于编译型语言和解释型语言之间的区别有着深入的理解。这两种类型的编程语言在将源代码转换成可执行代码的过程中采用了不同的机制,这导致了它们在执行效率、跨平台性、安全性以及开发效率等方面存在一些差异。 编译型语言(Compiled Languages)…...

将A服务器上指定文件夹中的文件,批量同步到B服务器上

需求&#xff1a;最近有一个需求&#xff0c;需要定期将A服务器上的PDF文件&#xff0c;同步到B服务器上&#xff0c;于是便写个脚本记录一下&#xff01; 下面是使用Python3脚本实现的方法 import os import paramikodef copy_pdf_files(source_ip, source_user, source_pas…...

2024.8.17

130124202408171002 DATE #:20240817 ITEM #:DOC WEEK #:SATURDAY DAIL #:捌月拾肆 TAGS < BGM "快哉风 -- 黄金玉米王" > < theme oi-language > < theme oi-graph theory > < [空] > < [空] >取次花丛懒回顾&#xff0c;半缘修道…...

十分钟搭建一个RTMP服务器

使用SRS搭建RTMP服务器 如果您需要搭建一个RTMP服务器&#xff0c;您可以使用SRS&#xff08;Simple-RTMP-Server&#xff09;来完成此任务。SRS是一个开源的RTMP服务器下面是一个简单的步骤指南&#xff1a; 获取srs srs官⽹&#xff1a;https://github.com/ossrs/srs 码云…...

Spring Boot解决循环注入问题

Spring Boot解决循环依赖注入问题 代码问题回显启动错误日志解决方案&#xff1a;使用事件驱动或通过 ApplicationContext 手动获取 Bean1. 事件驱动设计2. 使用 ApplicationContext 手动获取 Bean3. 拆分逻辑 总结 代码问题回显 现有代码1 在InterestService中依赖MemberInte…...

《数据挖掘》期末考核重点

1.数据预处理的目的与形式 数据预处理的目的是提供干净&#xff0c;简洁&#xff0c;准确的数据&#xff0c;以达到简化模型和提高算法泛化能力的目的&#xff0c;使挖掘过程更有效&#xff0c;更容易&#xff0c;提高挖掘效率和准确性。 2.数据预处理的形式 数据清理&#…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...