opencv2.4.9在Hi3531开发板上移植

合集下载

海康威视采集卡结合opencv使用(两种方法)-转

海康威视采集卡结合opencv使用(两种方法)-转

海康威视采集卡结合opencv使⽤(两种⽅法)-转(注:第⼀种⽅法是我的原创 ^_^。

第⼆种⽅法是从⽹上学习的。

)第⼀种⽅法:利⽤板卡的API: GetJpegImage 得到 Jpeg 格式的图像数据,然后⽤opencv⾥的⼀个函数进⾏解码,得到IplImage对象。

(我很郁闷海康威视采集卡为什么不直接提供RGB图像数据,⽽是提供了⼀个Jpeg数据给⽤户。

)libjpeg库就是专门处理 jpeg 格式的图像数据的,包括解码缩jpeg 格式的图像等。

opencv的库依赖于libjpeg库。

我看了libjpeg库的源代码,然后⼜看了opencv ⾥ cvLoadImage这部分的源代码,发现opencv已经封装好了⼀个图像解码器: cvImageDecoder.⽽且opencv的API 还提供了⼀个解码内存中的图像数据的函数:CVAPI(IplImage*) cvDecodeImage( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));先⽣成CvMat*,然后直接调⽤ cvDecodeImage 即可,以下是部分源代码:1void testCardAPI()2 {3 HANDLE channelHandle ;4 DWORD nport;56//initialize the card78 SetDefaultVideoStandard(StandardPAL); //returns 0 if error910//返回通道个数11int nChannels = InitDSPs();1213if( nChannels > 0 )14 {151617//try to open any Channel18for(int i =0 ; i < GetTotalChannels() ; i++)19 {20 channelHandle = ChannelOpen( i );21if( (unsigned int)channelHandle != 0xFFFFFFFF )22 {23//此处有疑问,nport 不知道是什么24 nport = i ;25break;26 }27 }2829//system("pause");3031// 如果 open channel 成功32if( (unsigned int)channelHandle != 0xFFFFFFFF )33 {34//注册画图回调函数35//RegisterDrawFun();3637 SetOverlayColorKey( RGB(10,10,10) );383940//设置视频预览模式: overlay41int supportOverlayFlag = SetPreviewOverlayMode( true );4243if( supportOverlayFlag != 0 )44 {45//不⽀持 overlay, 就报错46 }4748//CWnd wnd;49//wnd.m_hwnd;5051// StartVideoPreview( channelHandle, wnd.GetSafeHwnd() ,52 UCHAR imageBuf[704 * 576 * 2];53 DWORD Size = 704 * 576* 2;54 DWORD hSize=704 * 576* 2;55 UCHAR *imageBuffer=new UCHAR[hSize];56 cvNamedWindow("image",0);57while(1)58 {59 GetJpegImage(channelHandle, imageBuf, &Size, 50);6061 CvMat mat = cvMat(704,576,CV_8UC1, imageBuf);6263 IplImage *pIplImage = cvDecodeImage( &mat, 1 );6465//memcpy(imageBuffer,imageBuf,Size);66//IplImage *pIplImage=cvCreateImage(cvSize(704,576),8,1);67if(pIplImage)68 {69//memcpy(pIplImage->imageData,imageBuf,Size);70 cvShowImage("image",pIplImage);71 cvReleaseImage(&pIplImage);72 }73if(cvWaitKey(100)==27)74break;75 }767778 }79 }80 }第⼀种⽅法运⾏起来有点慢,可能是解压图⽚数据要耗时间罢。

opencv的移植到arm开发板的步骤

opencv的移植到arm开发板的步骤

Opencv移植到开发板的过程在移植opencv前,先要安装几个库:build-essential、manpages-dev、pkg-config、zlib、libpng、libjpeg、libz、libttf。

一、环境:系统:Ubuntu 9.10(内核2.6.31)目标板:sbc6045(系统:Qtopia,内核:2.6.30)交叉编译器:arm-none-linux-gnueabi-gcc二、准备:1、安装依赖库:sudo apt-get install build-essential manpages-dev pkg-config2、安装zlib库,这个是后面库的编译基础。

zlib-1.2.3.tar.gz在/root/opencv目录下# cd /root/opencv# tar -xvzf zlib-1.2.3.tar.gz由于zlib 库的configure 脚本不支持交叉编译选项,只好自己动用了,手动临时把gcc 修改成指向我们的交叉编译器arm-none-linux-gnueabi-gcc# cd /usr/bin# mv gcc gcc_back# ln -s /usr/local/arm/arm-2007q1/bin/arm-none-linux-gnueabi-gcc ./gcc修改完成后回到/root/opencv/zlib-1.2.3 目录下#./configure --prefix=/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi --shared注意:这里配置指向/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi目录,会自动安装在/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/ [include,lib] 目录下,千万不要装错目录了,不然后面会找不到这个库的# make# make install安装完后检查一下目录/usr/local/arm/arm-2007q1/arm-none-linux-gnueabi/ [include,lib] ,假如include 中没有zlib.h 之类的头文件,lib 中没有libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的*.h 都需要拷过去,在拷库的时候用cp –a libz.* /…./lib 就行,要用上–a 选项记着把刚才改过的gcc 再改回去,不然后面会出错的!!!!!(一定记得改)# cd /usr/bin# mv gcc_back gcc3、安装libpng库,这个是用来显示libpng图形的,MiniGUI里很多图都是libpng的,如果没有这个库,你的MiniGUI将无法正常工作,切记切记!libpng-1.2.18 .tar.gz在/root/opencv目录下# cd /root/opencv# tar -xvzf libpng-1.2.18 .tar.gz# cd libpng-1.2.18注意这边的配置:①使用交叉编译器②安装目录③—host 指定软将运行平台,不然终端也会提示说叫你使用—host 参数的。

在HI3531上移植和运行QT4.8.6

在HI3531上移植和运行QT4.8.6

在HI3531上移植和运行QT4.8.61、前言:近段有点时间,想把QT移植到HI3531上,在网上查找了很多资料,但都不是很全面,有些有问题也没有得到很好的体现。

2、环境:PC:ubuntu10.04HI3531交叉工具链:arm-hisiv100nptl-linux-QT版本:qt4.8.6(Qt libraries 4.8.6 for embedded Linux (230 MB)QT-Creator版本:qt-creator-linux-x86-opensource-2.4.1.bin3、交叉编译:1)进入qt-everywhere-opensource-src-4.8.6/mkspecs/qws目录,新建linux-hisi3531nptl-g++目录,复制linux-arm-g++目录下的所有文件到linux-hisi3531nptl-g++cp –a linux-arm-g++/* linux-hisi3531nptl-g++2)进入linux-hisi3531nptl-g++,修改文件qmake.conf# modifications to g++.confQMAKE_CC = arm-hisiv100nptl-linux-gccQMAKE_CXX = arm-hisiv100nptl-linux-g++QMAKE_LINK = arm-hisiv100nptl-linux-g++QMAKE_LINK_SHLIB = arm-hisiv100nptl-linux-g++# modifications to linux.confQMAKE_AR = arm-hisiv100nptl-linux-ar cqsQMAKE_OBJCOPY = arm-hisiv100nptl-linux-objcopyQMAKE_STRIP = arm-hisiv100nptl-linux-strip3)打开文件qplatformdefs.h增加#undef O_CLOEXEC此处主要为解决:编译过程中找不到accept4函数问题4)安装X11库sudo apt-get install libX11-dev libXext-dev libXtst-dev5)返回源码目录qt-everywhere-opensource-src-4.8.6进行配置./configure --prefix=/opt/qt4.8.6 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-hisi3531nptl-g++ -little-endian -qt-freetype -no-opengl -no-glib-nomake demos -nomake examples -nomake docs -nomake tools其中:--prefix=/opt/qte4.8.6 为交叉编译目标安装目录-xplatform qws/linux-hisi3531nptl-g++指定编译器及平台配置信息5)make6)make install4、PC编译:1)重新解压qt-everywhere-opensource-src-4.8.6.tar.gz,进行PC编译2)./ configure3)make4)make install5、安装QT开发环境1)sudo ./qt-creator-opensource-linux-x86-2.4.1.run2)下一步直到安装完成3)在应用程序,就可以看到QT Creator6、配置开发环境1)从PC的QT安装目录中拷贝如下文件到交叉编译目录cp /usr/local/Trolltech/Qt-4.8.6/bin/qml* /opt/qt4.8.6/bin/2)打开QT Creator3)打开工具-选项-QT版本4)打开添加按键,添加交叉编译的qmake5)进入工具链,打开添加按键,选择GCCE,在编译器路经选择arm-hisiv100nptl-linux-g++的路经到些就可以编译QT下自带的例子chip了,但这时在HI3531上还是不能显示的。

Hi3512 Demo单板用户指南

Hi3512 Demo单板用户指南

1 概述1.1 Hi3512 Demo 单板简介Hi3512 Demo 单板是针对海思Hi3512V100 媒体处理芯片开发的参考设计单板,在给客户展示芯片的强大多媒体处理功能和完善接口的同时,更为客户提供Hi3512V100 芯片的硬件参考设计,使客户不需修改或者只需要简单修改参考设计的模块电路,就可以完成同步产品开发;参考设计单板同时支持Hi3512 芯片的SDK 开发、应用软件的开发和运行、芯片验证等目的。

Hi3512 Demo 单板通过串口和网口线与开发PC 连接,作为一个基本开发系统使用,或实现更完全的开发系统或演示环境,此时连接如下设备或部件:电视机或监视器视频源(如模拟摄像头)音频源及音箱USB OTG 从/主设备SATA 硬盘、SD Card 等存储设备红外遥控器USB Wifi无线网卡、3G上网卡鼠标报警输入输出设备Hi3512 Demo 单板最多支持外接4 路CVBS 信号和音频信号,经过Hi3512 Demo单板编码后,将码流传到网络上或存储在本地SATA 硬盘;也可以自行解码后显示。

1.2 Hi3512 Demo 单板功能特性Hi3512 Demo 单板具有以下功能特性:支持4 路CVBS 输入,H264 Main Profile @ Level 3 视频编解码,最大编码能力为D1@60fps 或CIF@240fps支持1 路CVBS 输出支持1 路RJ45 网络接口、支持10M/100M bit/s 和全双工或半双工模式支持1 路立体声或MIC 输入、1 路立体声输出支持1 路USB 2.0 OTG支持1 路USB 1.1 设备支持2 路RS232 标准串口,1200~115200bit/s 波特率;1 路RS485 接口支持IR 红外接收接口支持4路报警输入和2路报警输出(带继电器)支持SD/MMC卡支持实时时钟存储器参数如表1-1 所示。

表1-1 存储器参数表存储器 数据位宽 频率 容量 DDR2 SDRAM 32/16 bit 144M 256MB Nor Flash 8bit - 16MB 以上功能的实现状态以版本发布时的信息为准。

minigui移植到hi3531

minigui移植到hi3531

miniGUI3.0.12移植到Hi3531分类:linux2013-04-22 10:01 412人阅读评论(1) 收藏举报minigui hi3531miniGUI3.0.12移植到Hi3531之前一直在用miniGUI2.0的版本,看到现在miniGui3.0 GPL开源了,所以下载来移植到Hi3531平台上,下面阿来详细将这个移植过程记录如下:一、移植资源包:下载miniGUI3.0.12组件简单介绍一下各个库:freetype:字体qvfb2和gvfb::虚拟显存,主要用在pc机上做仿真jpegsrc:显示jpeg图像时要用到的库libpng:显示png图像时要用到的库zlib:PNG压缩算法libminigui:minigui3.0.12的核心库minigui-res:minigui3.0.12资源文件,包括字体、图标、位图等mg-samples:minigui3.0.12例子程序minigui3.0.12可选组件: libmg3d(3D支持)、libmgi(提供输入接口)、libmgp(提供打印机接口的支持)、libmgplus(2D矢量图支持和图像加速)、libmgutils(提供一些常用对话框的模板),可以根据自己的需要来使用。

在这里我只安装了freetype,zlib,,jpegsrc,,libpng,libmgplus以及res,主库,和sample。

这里提示下,下面操作的安装目录是:/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi 这里你自己选择合适的安装目录就可以了。

二、编译zlib库编译配置脚本:1.[root@localhost]CC=arm-hisiv100nptl-linux-gcc \2.CXX=arm-hisiv100nptl-linux-g++ \3.LD=arm-hisiv100nptl-linux-ld \4.AS=arm-hisiv100nptl-linux-as \5.AR=arm-hisiv100nptl-linux-ar \6. ./configure \7.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \8. --shared9.[root@localhost] make10.[root@localhost] make install三、编译png库编译配置脚本:1.[root@localhost]CC=arm-hisiv100nptl-linux-gcc \2.CXX=arm-hisiv100nptl-linux-g++ \3.LD=arm-hisiv100nptl-linux-ld \4.AS=arm-hisiv100nptl-linux-as \5.AR=arm-hisiv100nptl-linux-ar \6. ./configure \7.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \8.--build=i386-linux \9.--host=arm-hisiv100nptl-linux \10.--target=arm-hisiv100nptl-linux \11.[root@localhost] make12.[root@localhost] make install注意;如果编译时报错提示zlib库没有安装的,解决方法:在编译之前(我是在configure之前),手动指定一下参数:1.export CFLAGS="-I/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/include"2.export LDFLAGS="-L/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib"四、编译jpeg库编译配置脚本:1.[root@localhost]CC=arm-hisiv100nptl-linux-gcc \2.CXX=arm-hisiv100nptl-linux-g++ \3.LD=arm-hisiv100nptl-linux-ld \4.AS=arm-hisiv100nptl-linux-as \5.AR=arm-hisiv100nptl-linux-ar \6. ./configure \7.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \8.--build=i386-linux \9.--host=arm-hisiv100nptl-linux \10.--target=arm-hisiv100nptl-linux \11. --enable-shared \12.[root@localhost] make13.[root@localhost] make install五、编译freetype库编译配置脚本:1.[root@localhost]./configure \2.--host=arm-hisiv100nptl-linux \3.--prefix=/opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi \4. --enable-static \运行配置脚本后,修改:1.[root@localhost] vim config.cache2.# 修改如下行3.ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}4.ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}5.ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}6.#重新配置,再运行一次配置脚本7.#修改Makefile文件,以跳过编译test目录。

【OpenCV入门教程之一】OpenCV 2.4.8或OpenCV 2.4.9 +VS2010 开发环境配置

【OpenCV入门教程之一】OpenCV 2.4.8或OpenCV 2.4.9 +VS2010 开发环境配置

【OpenCV入门教程之一】安装OpenCV:OpenCV 2.4.8或OpenCV 2.4.9 +VS 开发环境配置分类:【OpenCV】2014-02-24 11:12 37827人阅读评论(172) 收藏举报opencvvs2010c++目录(?)[+]本系列文章由@浅墨_毛星云出品,转载请注明出处。

文章链接: /poem_qianmo/article/details/19809337作者:毛星云(浅墨)微博:/u/1723155442邮箱:happylifemxy@知乎:/people/mao-xing-yun写作当前博文时配套使用的OpenCV版本: 2.4.8(2014年4月28更新2.4.9的配置。

2014年6月11日第5次修订本文完毕)OpenCV2.4.9和2.4.8的配置几乎一样,唯一的区别在下文中的第五步,链接库的配置,把对应的248改成249即可。

因为读研期间的研究方向是图像处理,所以浅墨这段时间闭门研究了很多OpenCV和图像处理相关的知识与内容。

眼看自己积累到一定的程度了,于是决定开始开设这个OpenCV 系列专栏,总结自己所学,也分享知识给大家。

好了,这篇文章作为OpenCV的启程篇,自然少不了先系统地介绍OpenCV开发环境的配置。

浅墨前后经历过OpenCV 2.4.6,OpenCV 2.4.7,OpenCV 2.4.8这三个版本的配置,有时候还要涉及到三个版本之间的转换,所以还是对OpenCV的配置有一定的理解的,希望自己的一点拙见能帮到大家。

还是先放出待会儿的测试用图:那么,开始吧。

1.下载和安装OpenCV SDKVS2010不用说,肯定都安装了吧。

来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装。

与其说是安装,不如叫解压更加合适,因为我们下载的exe安装文件就是一个自解压程序而已。

在官网:/上找到OpenCV windows版下载下来。

Hi3531/Hi3532 U-boot 移植应用 开发指南

Hi3531/Hi3532 U-boot 移植应用 开发指南

文档版本 00B10 (2012-05-15)
海思专有和保密信息 版权所有 © 深圳市海思半导体有限公司
v
Hi3531/Hi3532 U-boot 移植应用 开发指南
插图目录
插图目录
图 4-1 RealView Debugger 窗口 ........................................................................................................................... 9 图 4-2 Connetct to Target 窗口 ............................................................................................................................ 10 图 4-3 Choose RealView-ICE .............................................................................................................................. 11 图 4-4 RealView Debugger 信息提示框 ............................................................................................................. 12 图 4-5 RealView Debugger 信息提示框 2 .......................................................................................................... 13 图 4-6 Connect to A9 ........................................................................................................................................... 14

OpenCV安装与移植

OpenCV安装与移植

OpenCV的Ubuntu安装和Smart210_ARM开发板移植软硬件环境:宿主机:Ubuntu 10.04 32bit开发板:友善之臂Smart210OpenCV:2.4.10其他:cmake version 2.8.0arm-linux-g++ 4.5.1 / arm-linux-gcc 4.5.1查看Ubuntu版本号的指令为:sudo lsb_release –a,效果如下图1:图1:查看ubuntu的版本号1.Opencv2.4.10在Ubuntu上安装●首先安装必要的软件库安装GCC:sudo apt-get install build-essential安装Cmake:sudo apt-get install cmake安装Git(可选):sudo apt-get install git安装GTK开发版:sudo apt-get install libgtk2.0-dev安装pkg-config:sudo apt-get install pkg-config安装Python:sudo apt-get install python3.2-dev安装Numpy:sudo apt-get install python-numpy安装媒体包:sudo apt-get install ffmpeg安装可选媒体包:sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev●在OpenCV官网下载源码包:/●在/home/brodon/Documents文件夹下解压缩后,命令行输入cmake-gui,配置opencv的x86版本。

具体的操作见图2,注意在安装中,放弃了ffmpeg,OpenGL 库的支持。

cmake完成后进入opencv-x86文件夹,输入make 和make install安装。

嵌入式opencv-2.0.0移植

嵌入式opencv-2.0.0移植

嵌入式opencv-2.0.0,Qt-4.6.3移植一、移植环境操作系统:ubuntu 14.04交叉编译器:arm-linux-gcc-4.4.3二、移植过程在opencv移植之前我们需要解决opencv的一些模块的依赖关系,目前我们需要的模块的依赖关系由以下几个包提供:jpegsrc.v6b.tar.gz (jpeg函数库)libpng-1.2.18.tar.gz (png函数库库)zlib-1.2.3.tar.gz (z函数库)x264-snapshot-20100410-2245.tar.bz2 (x264函数库)yasm-0.7.2.tar.gz (汇编编译器,编译x264时需要用到)xvidcore-1.3.2.tar.gz (xvid函数库)ffmpeg-0.5.3.tar.bz2 (ffmpeg源码包)O penCV-2.0.0.tar.bz2 (OpenCV源码包)这些包的安装是有顺序的,请按照以下顺序安装。

1、安装交叉编译工具#tar zxvf arm-linux-gcc-4.4.3.tar.gz -C/root/添加环境变量#vim /root/.bashrc在路径中添加/opt/toolschnia/4.4.3/bin与已有的路径用冒号隔开刷新环境变量:#source /root/.bashrc2、交叉编译libz#tar zxvf zlib-1.2.3.tar.gz#cd zlib-1.2.3#CC=arm-linux-gcc ./configure --prefix=/root/arm/4.4.3/arm-none-linux-gnueabi –shared#make#make install3、交叉编译libjpeg#tar –zvxf jpegsrc.v6b.tar.gz#cdjpeg-6b#./configure--prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static修改生成的Makefile文件CC=gcc改为CC=arm-linux-gcAR=ar rc改为AR=arm-linux-ar rcAR2=ranlib改为AR2=arm-linux-ranlib#make需在/opt/toolschnia/4.4.3/arm-none-linux-guneabi目录下创建/man/man1目录,才能执行安装命令。

交叉编译opencv移植到海思3518

交叉编译opencv移植到海思3518

交叉编译opencv移植到海思35181.下载opencv源码2.下载cmake-gui在ubuntu虚拟机上安装cmake-gui,apt-get install cmake-qt-gui,并运⾏cmake-gui安装gtk等:apt-get install libgtk2.0-dev pkg-config3.交叉编译opencv3.1 导⼊hisi编译器路径下图为参考,我实际的是himix100。

CMAKE_C_FLAGS和CMAKE_CXX_FLAGS 增加-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4勾选ReleaseCMAKE_EXE_LINKER_FLAGS 增加 -lpthread -lrt -ldl去除with项的依赖,精简opencv⼤⼩选择⽣成的静态库还是动态库,这⾥我编译的是静态库。

根据需要勾选依赖库,是否编译为⼀个⽂件点击Generate⽣成后,到build路径执⾏make -j8,编译⽣成lib下的库4.精简动态库将⽣成的libopencv_world.a链接到⾃⼰的代码编译为so后,可以使⽤arm-himix100-linux-strip libxxxx.so再精简⽣成的动态库,以便在3518下可以放得下。

经过测试,增加CMAKE_C_FLAGS和CMAKE_CXX_FLAGS 增加-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4编译优化,可以使opencv运⾏时间减少⼀半。

移除with项依赖和选择所需的库,编译成静态库.a⽂件再链接⾃⼰的代码编译成动态库,可以⼤⼤减少⽣成库的⼤⼩。

参考:。

海思3520v300NDI协议移植

海思3520v300NDI协议移植

海思3520v300NDI协议移植1. 写在前⾯ NDI协议是什么不在本⽂的研讨范围,⼤家有兴趣的可以到官⽹上或其他⼈的博⽂查看它的介绍。

在这⾥我们只讨论怎么NDI协议移植。

在写这编之前我有在⽹上查过资料但是基本上没找到相关资料,给官⽅写邮件,磕磕绊绊终于移植成功了。

写下这编博⽂是想希望后⾯有相关需求的⼈有些借鉴资料少⾛弯路。

闲话少叙。

NDI移植的关键点是dbus和avahi的移植。

只要移植好dbus和avahi配置对就能运⾏NDI的例⼦了。

在移植前我们需要下载以下软件包,⼤家可以⾃⼰下载也可以使⽤我提供的软件包,avahi-0.7.tar.xzdbus-1.12.16.tar.xzexpat-2.2.9.tar.xzlibdaemon-0.14.tar.xzlibcap-2.25.tar.xz2. 移植2.1) expat移植 expat的移植很简单,就是configure,make,make install三部曲。

configure可以参照我的配置:#!/bin/bash./configure \CC=arm-hisiv300-linux-gcc \CXX=arm-hisiv300-linux-g++ \--host=arm-hisiv300-linux \--prefix=$(pwd)/_hisiv300_install \ac_cv_func_setpgrp_void=yes\--enable-shared=no\--enable-static=yes\需要加上 ac_cv_func_setpgrp_void=yes不然会报错。

2.2) libdaemon移植 libdaemon移植也是configure,make,make install就可以了。

configure可以参照我的配置:#!/bin/bash./configure \CC=arm-hisiv300-linux-gcc \CXX=arm-hisiv300-linux-g++ \--host=arm-hisiv300-linux \--prefix=$(pwd)/_hisiv300_install \ac_cv_func_setpgrp_void=yes\2.3) libcap移植make -j8 CROSS_COMPILE=arm-hisiv300-linux-make DESTDIR=/home/softwares/libcap-2.25/_hisiv300_install install2.4) dbus移植在libdaemon移植的时候我们可以先⽤--prefix=$(pwd)/_hisiv300_install选项在⼀个⽬录下⾯编译出libdbus-1.so以便后⾯我们编译 avahi的时候使⽤,再去掉—prefix=$(pwd)/_hisiv300_install,这样我们把 dbus-daemon放到板⼦上的时候就没有路径问题了。

Hi3519AV100移植Qt5.9.9

Hi3519AV100移植Qt5.9.9

Hi3519AV100移植Qt5.9.9起源:因为Hi3519AV100跑的是Linux系统,所以决定采⽤QT来做界⾯展⽰。

当前最新的QT版本是5.15,但是QT5.9是长期维护的版本,因此选择了QT5.9.9版本。

源码下载:在Qt官⽹上下载Qt5.9.9源代码解压源码tar xvJf qt-everywhere-opensource-src-5.9.9.tar.xz配置交叉编译器因为Qt5.9.9⽀持C++11,所以编译器版本需要⾼于4.8以上,我选择了6.3.1(因为给我们提供算法的公司采⽤的是这个版本-_-||)。

修改~/.bashrc ⽂件,在系统环境变量PATH中添加交叉编译器的路径。

(路径以实际路径为准)export PATH=/opt/hisi-linux/x86-arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabi/bin:$PATH执⾏命令source ~/.bashrc查看交叉编译器的路径是否已经添加到系统环境变量PATH中,可以通过查看交叉编译器版本号来进⾏判断。

arm-linux-gnueabi-gcc -v如果能正常显⽰交叉编译器的版本号,则证明配置成功!配置qmake.confcd /opt/Qt/qt-everywhere-opensource-src-5.9.9vi ./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf因为我们现在⽤的交叉编译器名称正好和这个⽂件中的名称是⼀样的,所以不需要进⾏任何修改。

如果交叉编译器为“arm-himix200-linux-gcc”与默认的不⼀样,则将“arm-linux-gnueabi”全部替换为“arm-himix200-linux”配置⽣成MakeFile⽂件cd /opt/Qt/qt-everywhere-opensource-src-5.9.9./configure -prefix /opt/Qtlib/qt-5.9.9 -release -opensource -confirm-license \-platform linux-g++ -xplatform linux-arm-gnueabi-g++ \-qt-zlib -qt-libpng -qt-libjpeg -qt-freetype \-no-pch -no-avx -no-openssl -no-cups -no-dbus -no-opengl -no-glib \-skip qtwebchannel -skip qtcanvas3d \-evdev -nomake examples -nomake tests-prefix /opt/Qtlib/qt-5.9.9 指定最终的安装路径为/opt/Qtlib/qt-5.9.9;-platform linux-g++ 指的是你在什么机器上编译这些⽂件,⼀般都是ubuntu或者centeros,-xplatform指的是程序要运⾏在什么平台,linux-g++会⽤来编译⼀些使⽤⼯具,像⽣成.qch帮助⽂档的qhelpgenerator,xplatform则指定编译库代码时⽤的编译器,以及⽣成make所有的qmake⼯具;-xplatform 所指定的不是交叉编译⼯具链的名字,⽽是交叉编译配置⽂件的名字,该⽂件需在/opt/Qt/qt-everywhere-opensource-src-5.9.9/qtbase/mkspecs/⽬录下,可以拷贝linux-arm-gnueabi-g++,然后根据⾃⼰交叉编译⼯具修改qmake.conf;-qt-zlib -qt-libpng -qt-libjpeg -qt-freetype 这⼏个选项最好使⽤qt库⾃带的源码,不然如果系统上没有这个库或者找不到,⾃⾏编译这些库后再加⼊到相关路径上还需要为这些库写依赖⽂件才能使⽤,没有依赖⽂件,链接程序时会报⼀些插件找不到的错误;-evdev ⽤于⿏标键盘;编译和安装makemake install接下来就是漫长的等待,整个编译过程⼤概需要2个⼩时。

Qt+OpenCV调用海康相机SDK采集图像(C++)

Qt+OpenCV调用海康相机SDK采集图像(C++)

Qt+OpenCV调⽤海康相机SDK采集图像(C++)配置环境: Qt5.12.5 OpenCV3.4.9 海康MVS3.1.0开发⼯具:QT Creator-4.11.01、开发步骤:1)创建QT项⽬,在pro⽂件中添加相机的引⽤⽂件1.1)添加海康的库:将海康SDK库MVS\Development\Includes和MVS\Development\Libraries\win64下复制到⾃⼰的⼯程⽬录下然后把库添加到.pro⽂件中点击下⼀步之后就会在.pro⽂件中出现如下代码然后在这后⾯加上以下代码,添加依赖项1 INCLUDEPATH += $$PWD/includes/2 INCLUDEPATH += $$PWD/includes/GenICam/34 DEPENDPATH += $$PWD/includes/5 DEPENDPATH += $$PWD/includes/GenICam/1.2)配置OpenCV跟上⾯配置HKSDK步骤相同库⽂件⽬录为OpenCV的安装⽬录D:/OpenCV/opencv/build/x64/vc14/lib/opencv_world349d.lib配置完成会在。

pro⽂件中出现如下代码需要在后⾯添加如下代码1 INCLUDEPATH += D:\OpenCV\opencv\build\include \2 D:\OpenCV\opencv\build\include\opencv \3 D:\OpenCV\opencv\build\include\opencv24 DEPENDPATH += D:\OpenCV\opencv\build\include \5 D:\OpenCV\opencv\build\include\opencv \6 D:\OpenCV\opencv\build\include\opencv2这样海康SDK和OpenCV库就配置完成了,可以在项⽬引⼊他们的头⽂件了。

Linux安装Opencv详细流程以及arm移植opencv

Linux安装Opencv详细流程以及arm移植opencv

Linux Ubuntu 安装Opencv作者:Tiger(xia)1.我们需要安装一个cmake(我这里用的是2.8.12.2版本)2.首先下载一个cmake3.Tar zxvf cmake的压缩报4.进入解压的文件夹输入./bootstrap5.make6.make install7.还需要一些库libgtk2.0-dev build-essential pkg-config (用apt-get install +对应的库)8.在下载Opencv(我是2.4.9版本)(默认安装在/usr/local/bin 和/usr/local/include)$ cd OpenCV-2.4.9$ cmake CMakeLists.txt$ make && make install9.export LD_LIBRARY_PATH=/usr/local/lib10.测试就加个Opencv的头文件就知道了11.pkg-config --modversion opencv12.编译gxx `pkg-config opencv --libs --cflags opencv` opencv_test.c -o test注意:一定先安装gtk库再安装opencvOpencv 移植编译说明:我们移植opencv 到itop arm板,交叉编译器是arm-none-linux-gnueabi-gcc,和arm-none-linux-gnueabi-g++前面已经介绍了opencv和cmake 的安装,这里用的是图形界面安装cmake-gui来进行opencv的交叉编译。

1.安装cmake-qt-gui (cmake的界面终端)sudo apt-get install cmake-qt-gui2.解压opencv2.4.9 tar -xzvf opencv2.4.9.tar.gz3.对opencv的交叉编译的相关配置在点击Configure那个按钮后要选择交叉编译如图:编译时要去掉几个cmake的复选框的BUILD_opencv_ocl 、WITH_OPENCL、WITH_TIFF 选项(不去掉编译时要出错哦)。

海思Hi35xx平台调试笔记

海思Hi35xx平台调试笔记

海思Hi35xx平台调试笔记1、进⼊板⼦debug环境 (根据⾃⼰情况)1) mount /dev/sda3 /root/disk2) minicom3) nfspc:sudo vi /etc/exports/root/disk/hi3516 *(rw,sync,no_root_squash,no_subtree_check)sudo /etc/init.d/nfs-kernel-server restartsudo /etc/init.d/rpcbind restartsudo ifconfig eth1 172.16.23.157board:ifconfig wlan1 172.16.23.158mount -t nfs -o nolock 172.16.23.157:/root/disk/hi3516 /root/hi3516注意海思sdk⾥的mpp⽬录名不要改动,改了会导致sample编译出错。

2、⾳视频数据循环采集a. 在sample_venc.c⽂件中,海思官⽅是把采集到的数据都保存到⽂件中,我们需要更改到缓存⾥,以便后⾯推送到rtsp/rtmp/hls服务端。

for (i = 0; i < s32ChnTotal; i++){if (FD_ISSET(VencFd[i], &read_fds)){/*******************************************************step 2.1 : query how many packs in one-frame stream.*******************************************************/memset(&stStream, 0, sizeof(stStream));s32Ret = HI_MPI_VENC_Query(i, &stStat);if (HI_SUCCESS != s32Ret){SAMPLE_PRT("HI_MPI_VENC_Query chn[%d] failed with %#x!\n", i, s32Ret);break;}/*******************************************************step 2.2 : malloc corresponding number of pack nodes.*******************************************************/stStream.pstPack = (VENC_PACK_S*)malloc(sizeof(VENC_PACK_S) * stStat.u32CurPacks);if (NULL == stStream.pstPack){SAMPLE_PRT("malloc stream pack failed!\n");break;}/*******************************************************step 2.3 : call mpi to get one-frame stream*******************************************************/stStream.u32PackCount = stStat.u32CurPacks;s32Ret = HI_MPI_VENC_GetStream(i, &stStream, HI_TRUE);if (HI_SUCCESS != s32Ret){free(stStream.pstPack);stStream.pstPack = NULL;SAMPLE_PRT("HI_MPI_VENC_GetStream failed with %#x!\n", \s32Ret);break;}/*******************************************************step 2.4 : save frame to file*******************************************************/HisiPutH264DataToBuffer(&stStream);/*s32Ret = SAMPLE_COMM_VENC_SaveStream(enPayLoadType[i], pFile[i], &stStream);if (HI_SUCCESS != s32Ret){free(stStream.pstPack);stStream.pstPack = NULL;SAMPLE_PRT("save stream failed!\n");break;}*//*******************************************************step 2.5 : release stream*******************************************************/s32Ret = HI_MPI_VENC_ReleaseStream(i, &stStream);if (HI_SUCCESS != s32Ret){free(stStream.pstPack);stStream.pstPack = NULL;break;}/*******************************************************step 2.6 : free pack nodes*******************************************************/free(stStream.pstPack);stStream.pstPack = NULL;}}b. HI_S32 HisiPutH264DataToBuffer(VENC_STREAM_S *pstStream)函数⽐较重要HI_S32 HisiPutH264DataToBuffer(VENC_STREAM_S *pstStream){HI_S32 i,j,x;HI_S32 len=0,off=0,len2=2,uplen=0;unsigned char *pstr;int iframe=0;for (i = 0; i < pstStream->u32PackCount; i++){len+=pstStream->pstPack[i].u32Len;}if(n<NMAX){for (i = 0; i < pstStream->u32PackCount; i++){memcpy(ringfifo[iput].buffer+off,pstStream->pstPack[i].pu8Addr,pstStream->pstPack[i].u32Len); off+=pstStream->pstPack[i].u32Len;pstr=pstStream->pstPack[i].pu8Addr;if(pstr[4]==0x67){UpdateSps(pstr+4,pstStream->pstPack[i].u32Len-4);iframe=1;}if(pstr[4]==0x68){UpdatePps(pstr+4,pstStream->pstPack[i].u32Len-4);}}ringfifo[iput].size= len;if(iframe){// printf("I");ringfifo[iput].frame_type = FRAME_TYPE_I;}else{ringfifo[iput].frame_type = FRAME_TYPE_P;// printf("P");}iput = addring(iput);// printf("(%d)",iput);// fflush(stdout);n++;}return HI_SUCCESS;}c. VENC_STREAM_S相关结构体//定义帧码流类型结构体:typedef structhiVENC_STREAM_S{VENC_PACK_S *pstPack; //帧码流包结构。

海思HI3531 4路高清SDI 1080P开发板使用手册

海思HI3531 4路高清SDI 1080P开发板使用手册

海思HI3531 4路高清SDI 1080P开发板使用手册海思HI3531 4路高清SDI 1080P开发板使用手册��、简介1) 开发板图片2) 资源情况主芯片为海思Hi3531带4片2Gbit DDR,一共1Gbyte带2个千兆网口,PHY为RTL8211EG带音频输入输出,均支持双声道立体声,AD/DA芯片为TLV320AIC31IRHBR 带4个TTL UART串口(其中包括一个调试串口)带2个SATA口,均带PM功能,可以接扩展模块,扩展为更多SATA口带1个时钟芯片DS1339带1个HDMI输出,可支持1080P@60fps 带1个VGA输出,可支持2560x1600@60fps 带2个USB输出,可以接USBHUB扩展更多USB口带4路SDI输入接口,可以支持4路1080P视频,AD芯片为GV7601 带2路CVBS输出带JTAG/PCIE/IR/GPIO/蜂鸣器等其他接口一、接线和启动拿到开发板之后,首先接好串口线(注意,不管什么接口,请在断电情况下插拔)如上图所示,J11为缺省的调试串口,带有箭头标记的为第一管脚接好串口线后打开串口调试工具超级终端或者其他调试工具都可以,下面的例子以putty为例,波特率设为115200,打开串口,然后上电 12V(内正外负)可以看到嵌入式操作系统开始启动启动完成输入ifconfig可以看到板子的IP情况如果接好网线,可以telnet到板卡,进行相关操作。

如果遇到串口不能输入的情况,请关掉软件,重新打开这个串口,或者重新插拔一下串口线二、启动示例程序板卡启动之后就是一个嵌入式linux系统,可以输入各种linux命令板子里面/nand/目录下带有各种例子,可以运行查看1)解码H264文件通过HDMI输出的例子请先接好HDMI显示器,然后运行 cd/nand./sample_vdec 0然后选0,选择frame mode就可以看到海思自带的一个例子,这个例子解码同级目录下的stream_chn0.h264,然后输出到HDMI显示器2) 解码H264文件通过VGA输出的例子请先接好VGA显示器,然后运行 cd /nand./sample_vdec 33) 视频输入直接输出到视频输出的例子请先接好VGA或者HDMI显示器 cd /nand. /sample_vio 2然后输入1 选择多画面分割模式可以看到 SDI的输入源显示在显示器上4) 其他例子请自行摸索测试三、SDK的安装与编译请通读SDK包中的 \\01.software\\board\\documents_cn 目录下的相关文档请注意,本板卡,已经烧写了uboot和内核文件系统,并且启动已经加载了海思相关驱动如果不小心擦除了uboot,可以通过海思自带的FastBoot3.1_BVT.exe烧写恢复,具体可以参看海思相关文档如果要执行SDK中的load3531脚本,请修改为4hd模式,并且去掉sil9024.ko驱动的加载详细情况,可以参考SDK中的文档,大概步骤如下1) 安装虚拟机软件推荐VirtualBox2) 在虚拟机上安装Linux系统,可以选择Ubuntu 等 3) 在Linux上安装GCC等编译器和开发相关工具4) 在Linux上解压缩Hi3531_SDK_VX.X.X.X.tgz 的压缩包 5) 在Linux上安装跨平台编译器arm-hisiv200-linux-gcc6) 编写Hello Word程序,然后通过arm-hisiv200-linux-gcc 编译,然后把编译后的程序放到Hi3531板卡上运行(配置好NFS可以加快开发进度) 7) 编译sdk中的sample,放到Hi3531板卡上运行四、系统资源简介SDI输入一共有4路 J7 ~ J10 分别接GV7601芯片J7 对应U1 对应VIU0/SIO0 J8 对应U2 对应VIU1/SIO1 J9 对应U3 对应VIU2/SIO2 J10 对应U4 对应VIU3/SIO3感谢您的阅读,祝您生活愉快。

海思处理器Hi3518 SDK架构分析和系统移植

海思处理器Hi3518 SDK架构分析和系统移植

海思处理器Hi3518 SDK架构分析和系统移植吴丽萍;蒋星红;戈志明【期刊名称】《工业控制计算机》【年(卷),期】2014(000)006【摘要】Hi3516,as a representative of the monitoring in the fieId ofHi3518 chip in many factories has been fuI y used.Media driven part of the SDK does not provide the source code,is onIy in the form of a Iibrary moduIe ko and Iib.So need to pay speciaI attention to when system transpIant.This paper anaIyzes the architecture of Hi3518 SDK,and reIated system trans-pIantation method is proposed.%海思半导体作为国产芯片生产的领先者,近几年相继推出了多款高性能的数字媒体处理芯片。

作为监控领域的代表Hi3516、Hi3518芯片在很多厂家得到了充分的应用。

SDK中媒体驱动相关部分不提供源码,都是只以模块ko和库Iib的形式提供。

因此在进行系统移植时需要特别注意。

分析了Hi3518 SDK的架构,提出了相关的系统移植方法。

【总页数】2页(P15-16)【作者】吴丽萍;蒋星红;戈志明【作者单位】苏州工业园区职业技术学院机电系,江苏苏州 215123;苏州工业园区职业技术学院机电系,江苏苏州 215123;苏州工业园区职业技术学院机电系,江苏苏州 215123【正文语种】中文【相关文献】1.海思半导体获得一系列ARM Mali图形处理器授权 [J],2.通用处理器和图像处理器新型融合架构分析 [J], 邹治海;沈祥;黄田;祝永新3.通用处理器和图像处理器新型融合架构分析 [J], 邹治海;沈祥;黄田;祝永新4.海思半导体获得ARMMali图形处理器授权 [J],5.Tensilica授权华为子公司海思半导体使用Xtensa系列数据处理器和ConnX DSP IP核 [J],因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

opencv2.4.9下载不用说了。

Ubuntu12.04虚拟机安装的+arm-hisiv200-linux交叉编译器+cmake-gui(2.8.7)
参考:/luotuo44/article/details/8958990
/s/blog_92942dba0101d1wj.html
一、建立编译环境配置
进入opencv-2.4.9目录建立release-hisiv200目录存放编译过程中文件。

#cd opencv-2.4.9
#mkdir release-hisiv200
#cd release-hisiv200
打开cmake-gui,进行博客中的配置:#cmake-gui
在configure时选择CMAKE_SYSTEM_NAME:arm-hisiv200-linux
C:选择/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gcc
C++:选择/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-g++ 修改安装目录:CMAKE_INSTALL_PREFIX:/opt/2.4.9-arm-hisiv200
进行编译:make
二、出现问题:
1、/usr/lib/libImath.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so] 错误1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] 错误2
make: *** [all] 错误2
主要opencv编译OPENEXR时要用到libImath.so,所有我就把那个取消了,然后编译就没出现过这个问题。

蓝色的部分不要选,还有下面这个也别选:
蓝色的部分不要选,还有下面这个也别选:
接在make:
2、Linking CXX executable ../../bin/opencv_test_calib3d
../../lib/libopencv_core.so: undefined reference to `pthread_key_create'
../../lib/libopencv_core.so: undefined reference to `pthread_getspecific'
../../lib/libopencv_ts.so: undefined reference to `pthread_key_delete'
../../lib/libopencv_core.so: undefined reference to `pthread_once'
../../lib/libopencv_core.so: undefined reference to `clock_gettime'
../../lib/libopencv_core.so: undefined reference to `pthread_setspecific'
collect2: ld returned 1 exit status
make[2]: *** [bin/opencv_test_calib3d] Error 1
make[1]: *** [modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2
make: *** [all] Error 2
解决方案:修改release-hisiv200目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,如下图:
3、../../lib/libopencv_ocl.so:undefined reference to 'dlopen'
取消掉上面两个复选框。

接在编译。

完成。

三、安装opencv库
#make install
在/opt/2.4.9-arm-hisiv200/目录下生成相应目录:
四、配置编译环境
如果没有安装pkgconfig则进行安装
参考/luotuo44/article/details/24836901
在/opt/2.4.9-arm-hisiv200/目录下建立pkgconfig目录,进入目录建立hisiv200-opencv.pc文件#gedit hisiv200-opencv.pc
输入图中的内容。

编辑库连接配置文件
加入下面图中一行
配置PKG_CONFIG_PATH
#gedit /etc/bash.bashrc
最后一行加入上图PKG_CONFIG_PATH配置。

#source /etc/bash.bashrc
五、编译测试程序
测试程序picLike.cpp内容为:
问题:
将opencv库文件拷贝到
/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/lib目录下
重新编译,问题解决。

六、在Hi3531上进行测试
1、因为hi3531空间不足,挂载程序运行。

#
2、配置环境变量
3、进入可执行程序目录执行程序
4、解决问题:从../../lib/libopencv_core.so建立了../../lib目录拷贝opencv库文件到此目录下,运行程序出现错误:Segmentation fault
5、将程序拷贝到相对于本来opencv库目录相对的目录下。

执行程序:
问题解决。

相关文档
最新文档