opencv2.4.9在Hi3531开发板上移植
海康威视采集卡结合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移植到开发板的过程在移植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.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单板用户指南

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

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: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 移植应用 开发指南

文档版本 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的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安装。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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库目录相对的目录下。
执行程序:
问题解决。