PCL学习(二)

            今天听到“噩耗”——mo要从实验室走了,他的活儿从下周开始由我接手,这意味着从今天开始,我终于正式搭上了经验机器人小组的末班车(喜悦?困顿?复杂。。。囧)。废话还是不多说,作为刚起飞的菜鸟,还是把最近学习PCL的一点点方法心得记录下来。

        要感谢heresy做的前期工作,原博文请参见如下地址:

        http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=1&PAPER_ID=217

        自己整合了一下,再加上pcd_write.cpp的范例,就很容易地利用openNI+PCL+Kinect得到了一个记录三维点云坐标的pcd文件;然后仿用simple_cloud_visualization范例将记录在pcd文件中的点云进行显示,搭积木般的,就容易地实现了从读取点云到显示点云的功能。下面这张图是对老板办公室那边的墙进行扫描3分钟后重建出来的三维图:

初步能看的出来是一堵墙上有一扇门的雏形吧,中间黑下去的一大块,猜想可能跟那地方是玻璃材质的挡板有关(光斑出现了散射),下次把颜色信息也加上去,期待能有更好的演示效果。这些,不是重点,码这篇博文主要是想说明下面的问题。

       在把simple_cloud_visualization.cpp对应的工程文件下面,按一贯的PCL项目配置方法把对应的include,lib路径,依赖库项目等一一配置完以后,debug,依旧会出现下面的错误:

这里要说明的是,在VS中对于error LNK之类的错误,只能说明程序编译已算通过,但运行时出现了问题,如下:

解析上面的语句:说明是打包好vtkRendering-gd静态库在运行时(它在编译前,里面应该对应着有一个叫做vtkOpenGLGlyph3DMapper的obj对象),无法找到以__imp__glCallList@4接口命名而实现的某函数。google!!发现它是OpenGL中定义的一个东东!(这里不得不说,window真是讨厌,明明之前我似乎有把该有的gl库放进系统自带库路径下面了,现在工程运行时却找不到对应的库,不知道是我配置出了错还是其他原因?)这个问题先放下。无奈,自己从网上下了一个不到500K的opengl95.exe(话说这个虽然版本低,但小巧强大,总比微软不更新windows自带的gl时不时引诱你用directX的好),打开安装到一个文件夹里面,然后把这个文件夹的路径添加到属性—链接器—常规—附加库目录,再把GLU32.LIB,OPENGL32.LIB,GLAUX.LIB添加到输入—附加依赖项里面,再次debug,编译通过!

        PS:安装PCL—win7版本时,会自动加载boost等第三方库,这是便利程序的平台移植而辅助添加的C++准标准库。但有时程序运行会报错,会出现某某(如:time_t)等不是std里的成员等,不是using某命名空间等错误,严重的,直接找不到某变量命名来源。而且,相同或相似名称但内容实现不同的io.h,time.h等文件在\pcl\common和\pcl\visualization\common,\3rdParty\Boost\include和\Microsoft Visual Studio 10.0\VC\include等不同第三方文件夹下都有定义,具体用到哪个视程序而定,万不可在包含文件中胡乱添加。一般情况下,在包含目录下把\PCL 1.3.0\include\pcl-1.3的include进去,就基本可以了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
PCL语言能够进一步提高打印质量,通常在中高端打印机产品中才会出现,是决定打印机输出复杂版面能力的重要指标。 PCL语言 正是Adobe公司的对PostScript语言的收费方式,给HP公司的PCL( Printer CommandLanguage,打印机控制语言)语言提供了发展空间,PCL语言是HP公司于70年代针对其打印机产品推出的一种打印机页面描述语言。HP公司的市场策略与Adobe完全不同,其他厂商可以在他们的打印机产品中自由模仿或使用PCL语言。正是PCL语言的开放性,降低了使用PCL语言打印机产品的成本,从而使其在打印机产品中的普及程度远远高于PostScript语言PCL语言最初也是为点阵打印机设计的,PCL3是第一个得到广泛应用的版本,但它只支持一些简单的打印任务。PCL4虽然还只能应用在个人打印机中,但增加了对图形打印的支持,但由于解释工作比较简单,PCL4比后期的PCL5和PCL6对打印控制器的要求要低很多。 PCL5是HP公司为它的激光打印机LaserJetⅢ设计的,它提供了一些与PostScript语言相似的功能,开始支持矢量字库和矢量图形描述,实现了WYSIWYG(What You See Is What You Get, 所见即所得),PCL5中也使用了各种压缩技术来减小数据量,加快数据传输。 PCL5e开始支持双向数据通讯,从而使打印机可以向计算机发送打印机的状态信息。PCL5c增加了对彩色打印的支持。 1996年HP公司发布了PCL6,它更加灵活,是一个目标朝向的控制语言,使处理多图形的文件的速度大大加快,实现了更好的WYSIWYG,可以更好地处理Web页面。 两种语言的比较 1.PostScript和PCL两者的工作流程都是首先在计算机的一端将打印内容解释成标准的页面描述文件,这种文件可以被所有采用这种语言打印机所识别,传送到打印机的核心——控制器中,然后在打印机控制器中将页面描述文件解释成可以打印的图像。从工作流程的角度看,采用这两种语言打印方式对打印机的“大脑”要求较高,需要打印机能够自己独立处理转换的任务,并且需要打印机本身有足够的内存。 2.PostScript和PCL都具备了标准化和与设备无关性的优势,对计算机系统资源占用也较少,两种语言的高版本还提高了对字库、图形和图像的解释能力,对于提供了高打印质量的产品,大都采用了此两类语言。但相对来说,由于对打印机核心部分——打印控制器性能的要求较高,一定程度会增加机器成本,尤其是PostScript对打印控制器的性能更高。 3.经过对多款使用PCL语言和PostScript语言的黑白和彩色激光打印机进行测试。发现,使用PCL语言打印机在处理文本或一些常见办公应用软件下的文档时具有非常明显的速度优势,在这些应用下,在打印质量方面与使用PostScript语言打印机也没有差距。使用PostScript语言打印机在常见办公应用下的打印速度要慢一些,但在处理PDF文件或在Photoshop等软件下打印大的图形图像文件时具有一定的速度优势,同时其在图形表现准确度、色彩表现准确度和一些字库表现准确度方面也比PCL语言有优势。所以PCL语言比较适合一些普通的商务办公应用,而PostScript语言更加适合对图形和色彩准确度要求比较高的专业应用。这也是目前许多打印机产品同时提供PCL和PostScript两个版本的驱动的一个重要原因。 其他相关 其他要说的一点是关于选配打印语言的问题,打印语言有标配和选配两种:所谓标配是把打印语言解释成一段程序,加载在打印机主控芯片程序里面,从主机过来的打印语言格式数据流直接在此芯片中解释成机芯所能识别和控制的视频数据。而选配则是把打印语言解释器做成了一个相对独立的硬件,插于打印机控制器中预留的解释器插槽中。相对于标配,选配的数据读取速度较慢,数据精确度较低。厂商采取选配打印语言的策略就是为了降低打印机的成本,一般的用户用其自带的打印语言就可以完成相应的工作了,但如果有用户需要其的打印语言,那选购打印语言模块后直接插在打印机上就可以了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值