monoslam,scenelib,spcaview

来源:互联网 发布:云端软件 知乎 编辑:程序博客网 时间:2024/05/17 23:46

scenelib 只支持1394 camera.不支持usb camera.

1394 camera主要用于工业相机.目前工业相机的常用接口有camera link, GigE, USB3.0, 1394等.  PoE  power over eth

编译scenelib的过程  源码和安装指导见http://www.doc.ic.ac.uk/~ajd/Scene/index.html

monoSlam研究。glow104和vw34,作为scenelib依赖库,需要首先安装。
遇到vw34安装问题。qt配置。修改configure.ac文件中qt选项为xno。重新./bootstrap ./configure即可。
ifdef _VWDEBUG
 exit is not a member of std   在VW/Image/imagebase.h中报错。方法是,添加#include<cstdlib>
 memcpy is not declared in this scope. 解决办法:修改<string>为<cstring>
'free' was not declared in this scope. 解决办法添加<cstdlib>
用VS的NMAKE构建,不会报错,但是用GNU MAKE构建,就会报错。GeomObjects/point3d.cpp:88: error: ‘VW::Point3D VW::operator+(const VW::Point3D&, const VW::Point3D&)’ should have been declared inside ‘VW’
解决办法:记得不仅class里面要有friend声明,namespace里面也要有声明
解决方法:for all these errors, all the friend functions must be added outside the class declaration like this:
解决:std::ostream operator<< should have been declared inside 'xxx'
各种问题总结:I cannot compile configure scritpt of VW34
安装libXext dev。发现已经安装过了。但是仍然报错missing。无奈只能修改./configure文件,添加libXext.a文件所在的目录到搜索目录范围内,解决此问题。
It properly needs a re-write the config files. http://ubuntuforums.org/showthread.php?t=1252423
double drand48(void);error: 'drand48' was not declared in this scope  解决办法:添加cstdlib库
typeid 使用前必须包含 <typeinfo>  按照错误提示添加。
找不到GL/glu.h头文件。搜索/usr/include目录,找到GL目录下面,确实没有glu.h头文件。转而安装libglu-dev库。
找不到GL/glut.h头文件。搜索/usr/include目录,找到GL目录下面,确实没有glut.h头文件。sudo apt-get install freeglut3-dev。

编译MonoSlamglow。arch -k  选项错误,需要删除。
-lVWFireware 找不到。
spacaview在ubuntu上的移植

Couldn't get videodevice capability   修改控制命令字, 参照v4l和v4l2的命令字对应表

http://blog.csdn.net/ecocn/article/details/8077028

用的v4l,调用ioctl(fd, VIDIOCGCAP , &vcap),程序出错,如下:

<div><span class="pun" style="color:#66660;">错误信息:</span><span class="pln" style="color:#000000;">VIDIOCGCAP </span><span class="typ" style="color:#66066;">Invalid</span><span class="pln" style="color:#000000;"> argument</span></div>

找了半天,有人说可以通过换摄像头解决,我没试,最后在google找到了解决办法,但是有新的问题了,没关系,慢慢来。

解决办法如下:(来自http://stackoverflow.com/questions/898474/v4l-problem-with-vidiocgcap-ioctl-call)
<div><span style="font-family:Arial,Liberation Sans,DejaVu Sans,sans-serif;"><span style="line-height:18px"><span class="lit" style="color:#06666;line-height:25px;">1.</span><span class="pun" style="color:#66660;line-height:25px;">我头文件使用的</span><span class="com" style="color:#8800;line-height:25px;">#include</span><span class="pln" style="color:#000000;line-height:25px;"> </span><span class="str" style="color:#0880;line-height:25px;"><linux/videodev.h></span><span class="pun" style="color:#66660;line-height:25px;">,替换为</span><span class="com" style="color:#8800;line-height:25px;">#include</span><span class="pln" style="color:#000000;line-height:25px;"> </span><span class="str" style="color:#0880;line-height:25px;"><linux/videodev2.h></span><span class="pun" style="color:#66660;line-height:25px;">,也就是使用</span><span class="pln" style="color:#000000;line-height:25px;">V4L2</span><span class="pun" style="color:#66660;line-height:25px;">;</span></span></span></div><div><span style="font-family:Arial,Liberation Sans,DejaVu Sans,sans-serif;"><span style="line-height:18px"><span class="lit" style="color:#06666;line-height:25px;">2.</span><span class="pun" style="color:#66660;line-height:25px;">然后</span></span></span><span style="line-height:22px"><span class="pln" style="color:#000000;line-height:25px;">ioctl</span><span class="pun" style="color:#66660;line-height:25px;">(</span><span class="pln" style="color:#000000;line-height:25px;">fd</span><span class="pun" style="color:#66660;line-height:25px;">,</span><span class="pln" style="color:#000000;line-height:25px;"> </span></span><span style="line-height:22px"><span class="pln" style="color:#000000;line-height:25px;">VIDIOCGCAP</span></span><span style="line-height:22px"><span class="pln" style="color:#000000;line-height:25px;"> </span><span class="pun" style="color:#66660;line-height:25px;">,</span><span class="pln" style="color:#000000;line-height:25px;"> </span><span class="pun" style="color:#66660;line-height:25px;">&</span><span class="pln" style="color:#000000;line-height:25px;">vcap</span><span class="pun" style="color:#66660;line-height:25px;">)改为</span></span><span class="pln" style="color:#000000;">ioctl</span><span class="pun" style="color:#66660;">(</span><span class="pln" style="color:#000000;">fd</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;">VIDIOC_QUERYCAP</span><span class="pun" style="color:#66660;">,</span><span class="pln" style="color:#000000;"> </span><span class="pun" style="color:#66660;">&</span><span class="pln" style="color:#000000;">vcap</span><span class="pun" style="color:#66660;">)。</span></div>

注意有点并没有对等的功能.  http://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec/ch08s01.html

V4L2 has no equivalent of theVIDIOCGPICT and VIDIOCSPICTioctl and struct video_picture. The followingfields where replaced by V4L2 controls accessible with theVIDIOC_QUERYCTRL,VIDIOC_G_CTRL and VIDIOC_S_CTRL ioctls:


 servfox version: 1.1.3 date: 11:12:2005 (C) mxhaard@magic.fr
Not a JPEG webcam sorry Abort !



<span class="pun" style="color:#66660;"></span><span class="pln" style="color:#000000;">VIDIOC_QUERYCAP</span><span class="pun" style="color:#66660;"></span>
Couldnt get videopict params with VIDIOCGPICT


移植spcaview&gspca&servfox搭建网络视频服务器  http://blog.chinaunix.net/uid-20698426-id-136226.html

软件架构:

Spcaview 调试v4l2

The VW34 library used by MonoSLAM provides an abstraction to the manipulation of image source, either from file sequences or video capture device.

The related code can be found at VW34/VWGLOW/Interface folder. Refering to VW34/VWFirewire

I added an interface named VWUSBCam, which calls functions in libspcav4l and added VWUSBCam interface to MonoSLAMGlow/monoslamglow*. Now theUSB camera works for MonoSLAM!



编译spcaview 过程,参考以下blog, 問題1和2均遇到且用此方法可以解决,但3没有遇到。

ubuntu 13.04 搭建spcaview http://blog.csdn.net/lxp90/article/details/24987723

1、常规的安装SDL,安装方法

安装SDL:

Ubuntu已经包含SDL库,所以通过几个简单的命令就可以安装,比windows还傻瓜!

sudo apt-get install libsdl1.2-dev(比较大,10M左右)

附加包:

sudo apt-get install libsdl-image1.2-dev

sudo apt-get install libsdl-mixer1.2-dev

sudo apt-get install libsdl-ttf2.0-dev

sudo apt-get install libsdl-gfx1.2-dev

安装完成之后,在目录/usr/include中,就会有个SDL文件夹,里面包含了所需要的头文件。

2、安装spcaview

     (1)解压

     (2)make

         错误1:没有<linux/videodev.h> 头文件

        解决1:#include <linux/videodev2.h>
                      #include <libv4l1-videodev.h>

                      任何.c的报错,都用以上解决方法,

        错误2:“BASE_OPRATE****”

       解决2:进入xx.c

                    宏定义 #define  BASE_OPRATE*** 198

                     谷歌解决的。

          错误3:

/usr/bin/ld: spcaview.o: undefined reference to symbol 'pthread_create@@GLIBC_2.1'
/usr/bin/ld: note: 'pthread_create@@GLIBC_2.1' is defined in DSO /lib/i386-linux-gnu/libpthread.so.0 so try adding it to the linker command line
/lib/i386-linux-gnu/libpthread.so.0: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [spcaview] Error 1
           解决3:

gcc -DUSE_SDL -O2 -DLINUX-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT spcaview.o utils.o tcputils.o picture.o encoder.o huffman.o marker.o quant.o avilib.odpsh.o shc.o shclib.o audioin_devdsp.o SDL_audioin.o -lm -L/usr/lib/i386-linux-gnu -lSDL -lpthread -o spcaview

         添加红色的部分。。



0 0
原创粉丝点击