原文:http://www.yanglajiao.com/article/hue2550/77881249

1、准备文件

ffmpeg-2.0.7.tar.bz2

opencv-2.4.9.zip

2、FFmpeg移植

1、解压

2、编译配置

./configure --prefix=/home/bug1989/opencv/ffmpeg_install --cross-prefix= aarch64-hisiv610-linux- --enable-cross-compile --arch=arm64 --target-os=linux --cc= aarch64-hisiv610-linux- gcc

此处会有一个警告,说xxx-pkg-xxx找不到,无视即可,不要被下着了,是warning不是error!

3、make

4、make install

5、在prefix中寻找你想要的

3、OpenCV移植

1、解压

2、添加之前移植安装完成的FFmpeg库的pkgconfig信息

export PKG_CONFIG_LIBDIR=/home/bug1989/opencv/ffmpeg_install/lib/

export PKG_CONFIG_PATH=/home/bug1989/opencv/ffmpeg_install/lib/pkgconfig/

3、解压后的根路径下运行cmake-gui,配置信息如下,注意“Linux”大写,“Target include”选择only,配置opencv源码路径,配置build路径,

点击configuration由于不支持CUDA配置报错,手动删除CUDA选项,删除OpenCL相关,删除V4L2相关,禁用动态库,禁用测试用例,设置make install的

安装路径,根据实际需求微调各种选项^_^!,确保ffmpeg的配置选项开启后点击generation,

4、进入build文件夹

make

make install

5、在prefix中寻找你想要的

4、测试用例

VideoSample.cpp

#include <opencv2/opencv.hpp>
#include <iostream>#include <stdio.h>
#include <sys/time.h>
#include <ctype.h>#define _MAX_FNAME  128using namespace cv;
using namespace std;static unsigned long get_current_time(void)
{struct timeval tv;gettimeofday(&tv, NULL);return (tv.tv_sec*1000000 + tv.tv_usec);
}int main()
{int frmCnt = 0;int time_0,time_1;int width, height;double dt;VideoCapture capture("a.mkv");width  = (int)capture.get(CV_CAP_PROP_FRAME_WIDTH);height = (int)capture.get(CV_CAP_PROP_FRAME_HEIGHT);printf("Video size:%d %d\n", width, height);cv::VideoWriter record;record.open("record.avi", CV_FOURCC('X','V','I','D'), capture.get(CV_CAP_PROP_FPS), Size(534, 300));time_0 = get_current_time();while(1){Mat frame, dispImg;capture >> frame;if(frame.empty()){break;   }/* Resize */cv::resize(frame, dispImg, cv::Size(534,300));/* Save with picture */imwrite("resize.jpg", dispImg);/* Save with video */char text[_MAX_FNAME] = {'\0'};sprintf(text, "FrmCnt: %d", frmCnt);cv::putText(dispImg, string(text), Point(5,15), FONT_HERSHEY_COMPLEX_SMALL, 1, CV_RGB(255,0,0));cv::rectangle(dispImg, cvPoint(100, 100), cvPoint(150, 150), cvScalar(0, 255, 255), 1, 4, 0 );   frmCnt++;//save frame and encoderecord.write(dispImg);if(frmCnt == 50){break;}}time_1 = get_current_time();dt = (time_1 - time_0)/1000000.0;printf("video end, frmCnt = %d, Consuming time %.3f s, %.1f FPS\n", \frmCnt, dt, frmCnt/dt);return 0;
}

Makefile

#This makefile is used to opencv 2.4CC = aarch64-hisiv610-linux-g++
DIR = /home/ubuntu/share/tangqi_code/opencv/opencv_3559_2.4.9TARGETS := VideoSample_3559LIBS =   -lopencv_highgui \-lopencv_imgproc \-lopencv_core \-lopencv_video \-ldl \-lIlmImf \-llibjasper \-llibjpeg \-llibpng \-llibtiff \-lzlib \-lavformat \-lavcodec \-lavdevice \-lavfilter \-lavutil \-lswscale \-lpthread \INCLUDE = -I$(DIR)/include/LIB_TARGET_DIR = -L$(DIR)/lib \
-L/$(DIR)/share/OpenCV/3rdparty/libCPPFLAGS = --staticall:$(TARGETS)$(TARGETS):VideoSample.cpp$(CC) $(CPPFLAGS) $(INCLUDE) $^ $(LIB_TARGET_DIR) $(LIBS)  -o $@clean:rm -f *.o $(TARGETS)

其中Makefile中的DIR路径是第3步中编译好的OpenCV的安装路径

5、有时间再补充细节吧,主要是写给自己看的

基于Hi3559A ARM64位嵌入式平台的OpenCV2.4.9+ffmpeg2.0.7移植相关推荐

  1. 基于Hi3559A ARM64位嵌入式平台的OpenCV2.4.9+ffmpeg2.0.7移植及应用

    前言: 按照上一篇文章的方式移植后发现可以正常操作图片文件,不能正常获取视频文件,后来发现是因为OpenCV中的视频API接口依赖于FFmpeg的支持,因此必须得移植合适版本的FFmpeg库,最新的不 ...

  2. linux嵌入式开发arm7,基于ARM7系列芯片嵌入式平台上实现的设计方案-嵌入式系统-与非网...

    本文介绍的方法是在用ARM7系列芯片S3C4510B和μClinux构建的嵌入式平台上实现的.在嵌入式系统设计过程中,系统的掉电保护越来越受到重视整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信 ...

  3. linux26内核,基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程

    一.ARM9+LINUX开发历程 使用了51系列和MOTOROLA单片机若干年,觉得自己已经跟不上嵌入式发展的时代了.决定开发一种新的硬件平台,综合比较了一下,觉得ARM9+LINUX模式不错.先从头 ...

  4. 基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程

    一.ARM9+LINUX开发历程 使用了51系列和MOTOROLA单片机若干年,觉得自己已经跟不上嵌入式发展的时代了.决定开发一种新的硬件平台,综合比较了一下,觉得ARM9+LINUX模式不错.先从头 ...

  5. 转载:基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程

    一.ARM9+LINUX开发历程 使用了51系列和MOTOROLA单片机若干年,觉得自己已经跟不上嵌入式发展的时代了.决定开发一种新的硬件平台,综合比较了一下,觉得ARM9+LINUX模式不错.先从头 ...

  6. 【新技术发布】基于深度神经网络的激光雷达物体识别系统及其嵌入式平台部署

    [新技术发布]基于深度神经网络的激光雷达物体识别系统及其嵌入式平台部署 激光雷达可以完成三维空间的测量,具有抗干扰能力强.信息丰富等优点,但受限于数据量大.不规则等难点,基于深度神经网络的激光雷达物体 ...

  7. 嵌入式arm linux产品,基于ARM——Linux的嵌入式产品平台构建

    摘要: 随着计算机技术的发展,嵌入式系统已成为计算机领域一个重要组成部分,并成为近年来新兴的研究热点.ARM7TDMI是一种高效,低功耗的RISC处理器,以该内核为核心的 LPC2210 是一款基于以 ...

  8. 嵌入式linux编码器,基于嵌入式平台的视频编码器的实现-嵌入式系统-与非网

    引言 H.264是由ISO(国际标准化组织)/IEC(国际电工协会)和ITU(国际电信标准化部门)合作制定的新一代视频编码标准,目前正处于应用开发阶段.与以往的视频编码标准相比,h.264具有更高的压 ...

  9. 深度学习自学(二十二):人脸检测人脸识别-嵌入式平台方案汇总

    整理的人脸系列学习经验:包括人脸检测.人脸关键点检测.人脸优选.人脸对齐.人脸特征提取等过程总结,有需要的可以参考,仅供学习,请勿盗用.https://blog.csdn.net/TheDayIn_C ...

最新文章

  1. hadoop系统 hdfs 命令行操作
  2. antd 表单提交,文件和表单内容一起提交,表单校验
  3. 4个计算机视觉领域用作迁移学习的模型
  4. hihoCoder week3 KMP算法
  5. STM32系统滴答定时器(systick)应用
  6. Leetcode题库 5.最长回文子串(C++实现)
  7. java时间api_什么是java时间API?
  8. Asp.NET中如何一次性下载多个文件
  9. 项目管理(4):备战pmp
  10. bootstrap弹出的模态框水平垂直居中的实现
  11. 逆向工程mysql注释_PowerDesigner 15进行逆向工程生成数据库图表时,注释的comment的生成,解决PowerDesigner逆向工程没有列注释...
  12. 凸优化第六章逼近与拟合 6.4 鲁棒逼近
  13. spring5.0学习笔记9
  14. lamp+cacti+ntop+thold+nagios+syslog
  15. 基于SSM的宠物医院信息管理系统javaweb毕业设计项目源码论文
  16. 中压变频器行业现状调研及趋势分析报告
  17. 20220326-代码日记-Unity画符
  18. 文华软件怎样测试交易系统的收益,文华财经交易系统之终极黄金
  19. const char*, char const*, char*const的区别
  20. Intent传递Bitmap

热门文章

  1. android 开发--获取文件的扩展名和去掉文件的扩展名
  2. android webview 63版,Issue in WebView Android History When update Chrome stable version 63
  3. 计算机专业大一暑假,2020年计算机专业大学生暑期社会实践调查报告
  4. SQL How to get the current day month and year
  5. codeforces654题解_CodeForces - 886C 解题思路
  6. linux sa 命令,Linux 常用命令全拼
  7. php播放ppt代码,PHP+JavaScript幻灯片代码
  8. 宝塔如何备份网站_学习织梦网站必需会的一件事:织梦网站数据备份
  9. oracle 行级死锁_ORACLE死锁的分类
  10. python线性整数规划求解_实例详解:用Python解决整数规划问题!