技术专栏
海思3559AV100:移植OpenCV3.4.1
文章目录
环境准备
1.下载opencv-3.4.1.zip(2020-03-08 12:59 87M)
下载完毕,解压后得到opencv-3.4.1文件目录。进入该目录后,新建build和install两个目录:
build
install
2.安装cmake
apt-get install cmake-qt-gui
3.安装gtk
apt-get install libgtk2.0-dev pkg-config
CMAKE基本配置
- 启动cmake:
cmake-gui
- 填写源目录和cmake的生成目录,完毕后点击Configure进行配置。(首次启动界面可能和下图不一致)(生成目录为你刚才新建的build目录)
上图中:
Operation System : aarch64-himix100-linux-gcc
C : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc
C++ : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++
Target Root : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/
- Finish点击后,需要再次点击Configure,结果如下:
- 设置安装路径:该路径为你刚才opencv目录下新建的install目录
配置CMAKE其他选项
(如果入门的话,按以下配置;否则可以自行修改)
- 填写这几项CMAKE高级选项,这是为了防止出现Opencv库编译期间报错问题。
CMAKE_AR : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-ar
CMAKE_EXE_LINKER_FLAGS : -lpthread -lrt -ldl
CMAKE_EXE_LINKER_FLAGS_DEBUG : -lpthread -lrt -ldl
- 勾选BUILD_opencv_world,这步是为了防止出现工程编译和运行期间库目录问题。
如果本项不勾选,工程编译和运行期间库目录问题如下图所示:
- 修改源码:3rdparty/protobuf/src/google/protobuf/stubs/common.cc,这是为了防止Opencv库编译期间报错问题
#define HAVE_PTHREAD
- 修改源码:3rdparty/libpng/pngpriv.h(130行),这是为了防止Opencv库编译期间报错问题
修改为:
/*# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \*/
# if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
- 修改ZLIB库包含目录,为了防止Opencv库编译期间找不到zlib包含路径
/home/jqy/opencv-3.4.1/3rdparty/zlib
- 上述要点配置完毕后,点击Configure,点击Generate,生成完毕,准备编译OPENCV。
CMAKE编译Opencv库
到build目录下执行make(-j16可以让16个核同时编译,加快编译速度)
make -j16
make install
完成后,在nstall目录下找到动态链接库和头文件。
板上测试
测试代码如下:(main.cpp)
#include <stdlib.h>
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void cvTest()
{
Mat img = imread("lena.jpg");
Mat grad_x;
Sobel(img, grad_x, CV_16S, 1, 0);
Mat grad_y;
Sobel(img, grad_y, CV_16S, 0, 1);
Mat gradImage = abs(grad_x) + abs(grad_y);
double minGrad, maxGrad;
minMaxLoc(gradImage, &minGrad, &maxGrad);
Mat gradImage_8U;
gradImage.convertTo(gradImage_8U, CV_8U, 255./maxGrad);
Mat thresholdedImage;//阈值化后的二值图
threshold(gradImage_8U, thresholdedImage, 20, 255, THRESH_BINARY_INV);
imwrite("gradImage_8U.jpg",gradImage_8U);
imwrite("thresholdedImage.jpg",thresholdedImage);
}
int main()
{
cvTest();
return 0;
}
编译指令:(其中,-I XXX -L XXX 这个目录根据opencv库生成目录自行修改)
aarch64-himix100-linux-g++ main.cpp -fPIC -lrt -D_GNU_SOURCE -lpthread -lm -ldl -lopencv_world -I '/home/jqy/opencv-3.4.1/install/include' -L '/home/jqy/opencv-3.4.1/install/lib'
将libopencv_world.so拷至板上,运行程序,得到阈值分割效果:
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
点赞
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包

相关专栏
-
浏览量:985次2024-01-08 18:13:05
-
浏览量:2942次2020-08-10 19:14:51
-
浏览量:10978次2022-08-12 15:15:09
-
浏览量:1481次2022-10-18 10:21:42
-
浏览量:1219次2023-10-13 10:22:12
-
2020-08-10 09:21:07
-
浏览量:4902次2020-08-14 11:29:53
-
浏览量:1855次2023-10-12 16:48:04
-
浏览量:2617次2018-11-22 13:49:22
-
浏览量:1305次2023-10-12 14:25:01
-
浏览量:937次2023-11-08 14:32:04
-
浏览量:888次2023-11-06 18:27:35
-
浏览量:3433次2020-08-10 19:30:45
-
浏览量:2248次2023-10-13 14:34:01
-
浏览量:2599次2024-01-18 15:01:07
-
浏览量:755次2023-11-08 18:19:59
-
浏览量:2780次2020-08-04 20:30:30
-
浏览量:1082次2023-12-22 14:13:56
-
浏览量:3662次2020-08-29 16:50:56
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者

老干部
您的支持将鼓励我继续创作!
打赏金额:
¥1

¥5

¥10

¥50

¥100

支付方式:

举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注