实验室 用到的MaxxVision 公司的GigEVison camera, 在windows下能够 运行,但在linux下总是 出现 编译通过,运行时,能够连接 上设备,但就是显现图像很慢,开始怀疑是
1. 硬件问题,去年在我的DELL新机器上跑,以为 是 我到 ethenet 网卡 无法设置jambo特新所造成的,结果后来在我的 desktop上也出现同样问题。
2. 系统驱动问题,因为在windows下,在网卡到property---》 servers 里要安装 厂家提供的 stream filter kernel 驱动,当把GigEVisionClient程序移植到linux下时,运行就出现
这个警告。按掉“Close”按钮后,能够检测到camera,但一 connect 就退出程序, 说是 :“Segmentation fault“如下。
bv5@bv5-desktop:~/MyPrograms/GigEVisionClient$ ./GigEVisionClient
API_ConnectDevice
valid ACK
1 0==0
Step2
Step3
Segmentation fault
猜测是 缺少这个驱动, 在网上看了 ,发现linux 内核里 含有UVC的驱动,不需要单独装载,实验自己到 web 摄像头 能够 正常工作,看来也不是这个原因。
3. 软件环境的问题。自己找到Macus 弄的linux下用GigEVision到README文件,把相关的 第3方库都check 了一边,应该都齐了,但问题还在,最后想Lars要他们用到的sample程序,因为他们 能够在他们到机器上用得 起来。结果,他把相关到库 和 他自己综合的 库 在我 机器上弄好后,他到代码能够 很好的运行, 就是在我的desktop上,如果eth0 和 eth1 都打开的话,就会出现 “找不到设备,连接不到设备”的错误。所以运行GigEVision
设备时,需要把internet 的eth0关掉。
4. 看来是我的代码的问题了,查看 Lars的 MaxxClientTest 和 我的 cameras_work_simultaneously 程序,发现在提取出 图像后,显示时,他的 cvWaitKey(5);是 “5”,而我的却是
”1“,当我改为‘2’时,问题就解决了!!!(OpenCV 怎么有这个问题!!!)
cvShowImage( "img", cvImgBgr );
cvWaitKey(5);