在之前的博客中,已经成功在PC的ubuntu12.04上编译了PCL1.6源码,今天开始尝试在ZYNQ(Cortex-A9)上进行编译。在PCL的邮件列表中,anupkini已经在ZYNQ上成功编译了PCL1.6,但是在使用过程中貌似还存在问题。
可以直接从官网上下载:http://pointclouds.org/downloads/
也可以使用svn进行下载:
svn co http://svn.pointclouds.org/pcl/trunk pcl-trunk
注:现在官网上的最稳定版本是1.6,用svn下载的是处于开发阶段的1.7版本
根据官网的说明,PCL必须要依赖以下库:
所以必须要确定PC上已经安装了这些库。我的系统中已经安装了boost库,只需要安装其他库即可。这些库都可以在相关网站上下载源代码进行编译,但是这样花费的时间比较多。我安装的方法是直接在debian的网上下载已经编译好的deb安装文件。
Eigen3.10: http://packages.debian.org/sid/libeigen3-dev
flann1.7: http://packages.debian.org/sid/libflann1.7
flann1.7-dev: http://packages.debian.org/sid/libflann-dev
下载的时候需要选择针对ARM的armhf架构,然后使用dpkg命令安装即可。
四、修改大小端#elif (defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) || defined(__INTEL__)) \ || (defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64)) \ || (defined(__ANDROID__)) # define PCL_LITTLE_ENDIAN修改后:
#elif (defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) || defined(__IN TEL__)) \ || (defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(_ _x86_64) || defined(_M_X64)) \ || (defined(__ANDROID__)) || (defined(__arm__)) || (defined(__arm)) || ( defined(__ARM__)) || (defined(__ARM)) # define PCL_LITTLE_ENDIAN然后是PCL-1.6.0-Source/io/include/pcl/io/ply/byte_order.h文件:
#elif (defined (i386) || defined (__i386__) || defined (__i386) || defined (_M_IX86) || defined (_X86_) || defined (__THW_INTEL__) || defined (__I86__) || defined (__INTEL__)) \ || (defined (__amd64__) || defined (__amd64) || defined (__x86_64__) || defined (__x86_64) || defined (_M_X64) || defined (ANDROID)) # define PLY_LITTLE_ENDIAN修改后:
#elif (defined (i386) || defined (__i386__) || defined (__i386) || defined (_M_I X86) || defined (_X86_) || defined (__THW_INTEL__) || defined (__I86__) || defin ed (__INTEL__)) \ || (defined (__amd64__) || defined (__amd64) || defined (__x86_64__) || define d (__x86_64) || defined (_M_X64) || defined (ANDROID) ||defined(__arm__) || defi ned(__arm) || defined(__ARM__) || defined(__ARM) ) # define PLY_LITTLE_ENDIAN五、编译安装
cmake -DCMAKE_BUILD_TYPE=Release ..然后打开生成的CMakeCache.txt,在前面几行可以看到需要编译的包的选项,需要编译就是ON,否则修改成OFF即可,比如所不许要可视化效果,修改BUILD_visualization:BOOL=OFF。
what(): No matching device found.
openni_wrapper::OpenNIDevice::OpenNIDevice(xn::Context&, const xn::NodeInfo&, const xn::NodeInfo&, const xn::NodeInfo&, const xn::NodeInfo&) @
/root/workspace/sources/PCL-1.6.0-Source/io/src/openni_camera/openni_device.cpp @ 125 : creating image generator failed. Reason: Failed to set USB interface!
1. Setting.py
TIME_ZONE = 'Asia/Shanghai'
LANGUAGE_CODE = 'zh-cn'
执行 python manage.py命令应该进入工程目录下执行
修改配置文件后未生效需要重启服务器
2. Django 与数据库交互
a). 创建APP
进入mysite目录里面,运行命令创建一个新的APP:
python manage.py startapp books
b). 创建模型
c). 安装模型
编辑settings.py,查找INSTALLED_APPS设置
然后添加'mysite.books'到INSTALLED_APPS列表
Django app已经在settings文件激活,我们可以在数据库中创建表了
首先通过如下的命令验证一下模型:python manage.py validate
如果你的模型是合法的,运行下面的命令为books app的模型生成CREATE TABLE语句
(如果你使用Unix会有五颜六色的语法高亮):python manage.py sqlall books
如果你愿意,你可以复制粘贴这些SQL到你数据库客户端或者使用Unix管道来直接传递它
尽管如此,Django提供一个简单的方式来把这些SQL提交数据库
像下面这样运行syncdb命令:python manage.py syncdb
确认你定义的任何模型都有一个__str__()方法,不仅是使在你自己使用交互环境时更方便
也因为当Django在几个地方需要显示对象时会使用__str__()的输出
最后,注意__str__()是给模型添加行为的好习惯
一个Django模型描述的不仅仅是一个对象数据库表结构,它也描述了对象知道怎样去做的功能
__str__()就是这样的功能的一个例子,一个模型知道怎样显示它自己
2. Q:一不小心删除了管理员用户怎么办?
A:
在你第一次运行 syncdb 时,你很可能被问起是否创建一个 superuser ,如果那时你没有创建 superuser ,
你需要运行 djang/contrib/auth/bin/create_superuser.py 来创建一个admin用户,否则你就不能登录到管理界面里去!方法,如下:
(1)在新版本中(1.2.1)windows下:E:\workspace\mydjango>python manage.py createsuperuser 然后依次输入用户名、邮箱、密码等
(2)在老版本中使用python /path/to/django/contrib/auth/create_superuser.py
参考:http://docs.djangoproject.com/en/1.2/topics/auth/#creating-superusers
使用javah 将某一个含有native方法的class 文件转换为.h文件:
切换目录到classes目录,比如:D:\DevWorkSpace\feiliao_copy\bin\classes> 然后在该目录下运行javah 命令,例如:javah com.feinno.feiliao.utils.media.voice.OpenCoreAmr
Application.mk
#可提供编译c++时的标准库 APP_STL := gnustl_static #使gcc编译时检查new的返回值,如果返回为空,构造函数就不再执行 APP_CPPFLAGS := -fcheck-new #开启异常捕获 APP_CPPFLAGS += -fexceptions #"release"模式是默认的,并且会生成高度优化的二进制代码。 #"debug"模式生成的是未优化的二进制代码,但可以检测出很多的BUG,可以用于调试。 APP_OPTIM := release #可选,如果没有定义,NDK将由在Android.mk中声明的默认的模块编译,并且包含所有的子文件(makefile文件) #APP_MODULES := felio-sound imageprocessor-jni APP_PLATFORM := android-7