搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
秋刀鱼在做梦
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
结构开发笔记(一):外壳IP防水等级与IP防水铝壳体初步选型
2
【IDEA-插件】Gitee使用_idea下载了gitee插件 如何去使用 博客
3
Linux服务器(银河麒麟、CentOS 7+ 等)修改IP地址_麒麟系统修改ip
4
PyQt5基本控件详解之QWidget(二)_pyqt5 pos
5
Docker指定网桥和指定网桥IP_docker网桥地址
6
kafka删除消息_kafkatemplate删除指定消息
7
2018牛客网暑假多校第一场J(树状数组+思维)_成熟的阿梓发现了一种构造成熟的数列的方法 假设该数列叫 a,给定这个数列的前两项
8
多分支if语句
9
Flowable工作流引擎:Spring Boot集成指南_flowable springboot
10
利用ESP32-C3将TF卡内容变成U盘进行读取_esp32 u盘
当前位置:
article
> 正文
ARM集成opencv_arm上的opencv
作者:秋刀鱼在做梦 | 2024-08-13 11:07:55
赞
踩
arm上的opencv
转载一篇ARM做视觉的文章,入门看看
硬件:
核心mcu arm9 s3c2410嵌入式的应该知道这款吧
板子外围接口都有,USB,串口,网口,sd卡槽等
web camera (USB接口)
nand Flash 64M
软件版本:
boot: uboot1.2
Linux kernel:2.6.26
文件系统:yaffs
编译器:arm-gcc-linux 4.3.2
文件系统制作工具:busybox
以上是构建Linux系统软件
--------
OpenCV 2.8.2 源代码
cmake 工具
编译图像处理依赖库 所需
--------
宿主机
Ubuntu 12.04(tftp server)
这都是前期的准备
进入正题: 我的课题是《the real-time image processing system based on embedded arm Linux》
具体 bootloader 制作 Linux kernel 交叉编译 文件系统制作 我在大三时候嵌入式专业课就搞好了,只不过后来因为要加上Linux V4L(Video for Linux) 又重新做了一遍。不会的网上有很多资料。ps:最好加上USB挂在U盘的相关驱动
具体 到 opencv的交叉编译,首先一定要和文件系统相同版本的编译器来compile;cmake 有相关选项 编译选项有很多选上需要的,arm 不支持的不要选,不然编译会报错(我就编了两天 ,编出来了可依赖库文件)
--------------------------先写这么多,晚上接着跟#----------
不好意思,由于这几天比较忙就没空跟帖 所以今天晚上就抽个空论文看了一遍,继续写了。。。
针对于@
张岱珅
说的问题 是我记错了,cmake是用的2.8.10的 OpenCV使用的是2.4版本(目前最新3.0左右吧),不好意思。
至于@
chen jason
@
Kaixiang Wang
多线程的问题实际在我这次实现中 更多的注重ARM嵌入式Linux 移植 OpenCV so文件是否在已有的算法上可行,说实话结果并不是很好。
好了,各位大神的支教就说到这了,具体到立体标定,三维识别和建模的相关算法, 有兴趣的同学可以深究,目前算法OpenCV源代码中有Example是给出的。
--------------------------------------------割---------------------------------------
接下来接着说 移植 OpenCV Library 到 embedded Linux
<img src="https://i-blog.csdnimg.cn/blog_migrate/c011717efb719139fa0f10dba76e0470.png" data-rawwidth="728" data-rawheight="445" class="origin_image zh-lightbox-thumb" width="728" data-original="https://pic2.zhimg.com/8769f73d508d30c8ae3db564895f4f05_r.png">特地找了个Cmake-gui编译的时候的图,一般都是terminal下cmake就好了,但是gui看着比较直观,不难看出编译源文件的时候选用的是arm-linux-gcc和arm-linux-g++(切记版本一定要和制作FS的时候一致)
特地找了个Cmake-gui编译的时候的图,一般都是terminal下cmake就好了,但是gui看着比较直观,不难看出编译源文件的时候选用的是arm-linux-gcc和arm-linux-g++(切记版本一定要和制作FS的时候一致)
configure 时 一般都是建立好 OpenCV的build目录和lib的生成目录,还有一些编译选项 ,例如 WITH_CUDA WITH_TIFF 等等
Generate 生成OpenCV的Makefile以后 就可以进入到build的目录下 make 源码 make install生成.so 和.a文件了。(这个过程还是需要点时间的,所以最好确保编译选项选的合适,否则反反复复也比较折腾的)
这个时候编译好的库文件有多种方法可以让ARM板子上Linux使用(列3中)
1,copy to U盘 ,板子如果可以有USB接口,可以mount U盘即可,再把U盘mount到Linux /lib下
2,NFS 同样通过这个可以mount到/lib下
3,Linux根文件系统在制作的时候我们一般留有 一个 -rwx的/tmp目录,tftp将这些 库文件copy到板子上,在/tmp 目录下建立 /tmp/lib 将 /lib 目录下的原来的库文件 copy to /tmp/lib,再将 OpenCV的库文件copy to /tmp/lib 最后 mount /tmp/lib 到/lib 这样就可以保证Linux可以使用OpenCV的库文件了
以上一般都是自己学习研究过程的做法,如果是APP层到kernel 都比较成熟的话 可以将kernel uImage 和 fs 和 APP 同时打包 一同烧录到board 上就可以了, 即整个系统分为 boot + 打包的img
------------------------------------------------------------------------------------------------------------
以上基本上可以说 你可以运行需要OpenCV 的第三方库的软件 需要环境已建立
APP层就可以有多种多样的,对于ARM9上的APP那就不好说了,正如
@chen jason
说的一样,这个跑起来就是基本上是萎的
拿一个例子来说吧
stereo_calibration:摄像头标定
当然 编译也当然要在宿主机上编译(当然现在有的board可以带编译器) compiler版本要准确 -I 加上OpenCV的include -L OpenCV所需库文件和其他的库文件 编译生成的文件 应该就是可以再board上跑的
<img src="https://i-blog.csdnimg.cn/blog_migrate/b8f1467a4da0a7b0eb2fee4c5ba90717.png" data-rawwidth="553" data-rawheight="433" class="origin_image zh-lightbox-thumb" width="553" data-original="https://pic4.zhimg.com/09c073a225087f1d6cad98f30546c5b7_r.png">这个应该很熟悉的 :LEFT000
这个应该很熟悉的 :LEFT000
<img src="https://i-blog.csdnimg.cn/blog_migrate/657a5914d4dcd0aa6370cb6b81e2ae7a.png" data-rawwidth="547" data-rawheight="433" class="origin_image zh-lightbox-thumb" width="547" data-original="https://pic2.zhimg.com/87ac319ce38400f7aaa4add5b8f68ab5_r.png">:RIGHT000
:RIGHT000
执行成功后生成摄像头内外参数文件,intrinsics.yml,extrinsics.yml 两个文件,在立体匹
配的参数输入
stereo_math 这个源文件也需要和stereo_clib同样编译 将以上的camera的内外参
intrinsics.yml,extrinsics.yml 放到改可执行文件的相同目录下
先看我们需要match 的两个图
<img src="https://i-blog.csdnimg.cn/blog_migrate/fa58120d913585b6cbed5354a2b2e142.png" data-rawwidth="551" data-rawheight="433" class="origin_image zh-lightbox-thumb" width="551" data-original="https://pic4.zhimg.com/e924c9e409e7a7540dbfd1824b6820b7_r.png">
--------------------------------------------------------------Left:------------------------------------------------------------------
<img src="https://i-blog.csdnimg.cn/blog_migrate/b1eb277629c218d489eead72a0888a7d.png" data-rawwidth="552" data-rawheight="433" class="origin_image zh-lightbox-thumb" width="552" data-original="https://pic4.zhimg.com/a26022d08ab4ae87d1c50595b913470b_r.png">
--------------------------------------------------------------------Right--------------------------------------------------------
结果::::::结果:::::结果::::
深度图:视差图
<img src="https://i-blog.csdnimg.cn/blog_migrate/36cf412c7da9eac100ee11f4829581f5.png" data-rawwidth="320" data-rawheight="271" class="content_image" width="320">
明显这个噪声和误差不是一般的大
这个原因有很多种:最容易想到的是摄像头不怎么好,当时用的就是普通的web camera,还有标定的时候我看到动了位置和距离(大家应该都了解 Linux2.6.26内核是不支持同时打开1个以上的camera的:因为内核就只允许初始化一个camera dev),所以我就一个摄像头拍完,USB接口取下来,另一个插上去 ,虽然插拔过程中没有动过摄像头,但是可能也有少许有的吧
这个match过后还会生成一个 point.xyz的文件,这个应该都知道干嘛的吧 ,就是 PCL(point cloud library) 点云库 工业机器人上应该用的比较多,也就是说xyz文件就是当前算出来的立体空间的三维坐标,也就是可以模拟出来三维空间。
至于OpenCV大概就是这样,虽然吐图像效果可以说是没有,但是至少arm还是可行的,到时是arm芯片当然是越高档越好。
至于这个项目:当初老师说最终还是走gpu CUDA,目标是坐在多旋翼无人机上,进行地理勘测的。这个arm给我试试看来着;我毕业后也没有在追过,我也就是兴趣爱好探究一下,希望对大家有点帮助,多谢各位大神指教,恕不邀自来,O(∩_∩)O哈哈~
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/974510
推荐阅读
article
opencv
+
cmake
编译
过程中的错误收集
_
win
opencv
编译
报错
...
opencv
/sources/3rdparty/protobuf/src/google/protobuf/stubs/m...
赞
踩
article
opencv
2
/
opencv
.
hpp
找不到该文件...
作者在学习Opencv时遇到编译错误,原因是Ubuntu版本可能导致cv2/core.
hpp
路径不一致。通过创建软链接将...
赞
踩
article
【
OpenCV
】
OpenCV
函数精讲之
--
“
opencv
.
hpp
”
头文件
...
# include <
opencv
2/
opencv
.
hpp
>
头文件
定义类似如下:# include <
opencv
2/o...
赞
踩
article
OpenCV
+
CLion
在
windows
环境下使用
CMake
编译, 出现
Mutex
相关的错误的解...
在Windows上使用
CMake
构建
OpenCV
项目时遇到找不到mutex的问题,经过排查发现是MinGW版本的问题。通...
赞
踩
article
OpenCV
+
CLion
在
windows
环境下使用
CMake
编译, 出现无法定位
程序
输入点于动态...
之前可以运行的
程序
也报类似这样的错误,所以怀疑是不是mingw64版本下载的不对,就去查了一下,还真是这样的。原来匆忙中...
赞
踩
article
【
opencv
】
OpenCV
开发环境
配置
(
C++
)
_
c++
配置
opencv
...
点击链接器 -> 点击输入 -> 附加依赖项。打开VS 2022,点击创建新项目。点击项目 -> 点击属性。
_
c++
配置
...
赞
踩
article
win1
0
编译
opencv
-
4.6
.
0
+
opencv
-
opencv
_
contrib
-
4.6
.
0
+qt...
报错:
opencv
\
opencv
_
contrib
-
4.6
.
0
\modules\cudawarping\test\test...
赞
踩
article
opencv
编译安装时出现报错
modules
/
videoio
/src/cap_
ffmpeg
_im...
目录1. 报错2. 报错原因3. 卸载当前
ffmpeg
3.1. 卸载apt安装的
ffmpeg
3.2. 卸载编译安装的ff...
赞
踩
article
opencv
&
mfc
学习笔记
(
四
)
_
mfc
和
opencv
...
今天来学习以下
opencv
中Mat类的相关概念:Mat类是
opencv
中最核心的概念,是matrix的缩写,意为矩阵或者...
赞
踩
article
opencv
-
python
库
cv2
图像
二值化
详解_
python
opencv
二值化
...
在OpenCV中,
cv2
.threshold 函数用于对图像进行阈值处理。定阈
二值化
是用户把整幅图像上的每个像素点的灰度...
赞
踩
article
OpenCV
python
(四)
图像
预处理
:
二值化
&&
滤波
操作_
python
opencv
二值...
本篇文章的主要内容为
二值化
和
滤波
操作的介绍和使用方法,包括一些
滤波
方法选择的个人见解。_
python
opencv
二值...
赞
踩
article
OpenCV
图像
处理
————
图像
二值化
_
opencv
二值化
...
在
图像
处理
中,
二值化
是一种常见的操作,它将
图像
中的像素值转换为 0 或 1,从而将
图像
分为黑白两部分。OpenCV 是一...
赞
踩
article
php
opencv
二值化
,
opencv
摄像头采集 图像
二值化
源码...
#include #include #include #include int main(int argc
,
char**...
赞
踩
article
Opencv
(C++)笔记
--
图像的
二值化
、修改
对比度
和亮度_
c++
opencv
二值化
...
②saturate_cast是OpenCV防止溢出的一个函数,当像素值超过255时,修正为255,当像素值为负数时,修正...
赞
踩
article
图像处理
基本方法-
c
语言
调用
open
c
v
生成纯色
BMP
文件
_
c
调用
open
c
v
...
图像处理
基本方法-C语言
调用
open
c
v
生成纯色
BMP
文件
之前使用过
c
语言实现过成纯色
BMP
文件
的功能。这次使用
c
调用
o...
赞
踩
article
9.
OpenCV
--
图像
二值化
(
Binary
Image)_
binarized
image
...
》》点赞,收藏+关注,理财&技术不迷路《《目录:9.1
二值化
概念与原理
二值化
——
图像
只有两种色,黑白。0-1,0=...
赞
踩
article
【
图像处理
】
opencv
| 图像的二值化操作|
cv2
.
threshold
() |
cv2
.ada...
【
图像处理
】
opencv
| 图像的二值化操作|
cv2
.
threshold
() |
cv2
.adaptiveThres...
赞
踩
article
OpenCV-
图像
二值化
_
opencv
图像
二值化
处理
...
使用OpenCV接口对
图像
进行
二值化
处理
,对比全局
二值化
与自适应
二值化
的效果差异_
opencv
图像
二值化
处理
opencv
...
赞
踩
article
python
:
opencv
二值化
处理_
python
cv2
二值化
...
1:
二值化
处理https://blog.csdn.net/zj360202/article/details/791657...
赞
踩
article
[转载]
python
3
opencv
图像
二值化
笔记(
cv2
.
adaptiveThreshold
)...
参考链接:
python
opencv
基础6:
cv2
.threshold()二值图像前一篇研究了
opencv
二值化
方...
赞
踩
相关标签
opencv
计算机视觉
qt
人工智能
windows
c++
开发语言
python