对ptgrey的camera进行编程还是比较painful的。想想以前自己写olympus和DH-400的程序也没这么麻烦呀,可能是应用相对简单吧。现在写ptgrey的程序真是头疼,没有人可以请教请教,API的doc也讲的很简单,提供的sample也比较少,有时候基本上全靠自己一个人在那瞎琢磨,简直就在挑战自己的想象力和排列组合能力。经过3天的排练组合,程序终于可以了修改frame rate和video mode了,但是改成任意大小显示还有点问题,不过应该可以将就着用了。
——————————–
下面是细节的东西,可能也就自己会看看:
程序是从timeSliceDemo这个例子该过来的,创建了单文档多视图的程序,还创建了CMultiDocTemplate。修改frame rate和video mode主要是修改startSync()和grabAndCheckSync()这两个函数,
grabAndCheckSync(), 其中grab image主要由两个函数实现flycaptureLockNext和flycaptureConvertImage。flycaptureConvertImage将arbitrary image type转成dst image,转换之前要设置dst image的格式,我试了一下,这里只能是FLYCAPTURE_BGRU,不然该程序就会报错,血的教训呀,2天时间。如果设置成FLYCAPTURE_BGRU的话,在startSync中创建buffer的时候就要为cols * rows * 4,因为4个channel嘛。
startSync(),这个函数里pixelFormat也要设置成FLYCAPTURE_BGRU,如果设置成FLYCAPTURE_MONO8, FLYCAPTURE_422YUV8, FLYCAPTURE_BGR, FLYCAPTURE_RGB8等都会出错。doc里没有说,显然ptgrey连明年版本里的功能都先写进doc里了,可把我害惨了。如果要改变图像的分辨率,要在这两个函数里改,flycaptureGetCustomImagePacketInfo和flycaptureStartLockNextCustomImagePacket。或者不用packet,直接用flycaptureStartLockNext,而不用flycaptureStartLockNextCustomImagePacket,这样就可以设置VIDEO_MODE和FRAME_RATE。比如设置成15Hz,省得server的workload太大。
令人郁闷的事情终究还是发生了,把调好的程序放到server上就又不行了,明天接着来。实在不行就只能问ptgrey的support了。
被ptgrey fool了一把,原来那些FLYCAPTURE_BGR是可以用的,但是view类最终显示时将bmpheader中的biBitCount定义为32位,所以就只能用FLYCAPTURE_BGRU了。faint啊。。。
今天把viewer的显示频率降到7.5Hz后,连6个camera都没有out of sync和掉桢,不错。。
Hi/Andy/
請問你用的是ptgrey的哪一款Camera呀/
還有你是否用artoolkit呢/
能不能告訴我一下你的e-mail/謝謝/
我用的ptgrey flea2 1024×768 color camera, 用的是附带的sdk,没有用你说的那个。
你好,
我也刚买了个ptgrey flea2 1024×768 color camera,需要用软件触发初始化相机并保存一帧图像成Jpg或者Bmp格式,有什么程序能不能指导一下啊,第一次用……邮箱soniabubu@163.com
安装完ptgrey的driver后,里面有个src目录,提供了很多使用相机基本功能的source code。你可以看看。
找到了,O(∩_∩)O谢谢!
你好,
再问一个问题,呵呵,编译出现这种情况是怎么回事……
SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureStop,该符号在函数 _main 中被引用
1>SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureSaveImage,该符号在函数 _main 中被引用
1>SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureReadRegisterBlock,该符号在函数 _main 中被引用
1>SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureWriteRegisterBlock,该符号在函数 _main 中被引用
1>SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureGrabImage2,该符号在函数 _main 中被引用
1>SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureStartCustomImage,该符号在函数 _main 中被引用
1>SaveImage.obj : error LNK2019: 无法解析的外部符号 __imp__flycaptureDestroyContext,该符号在函数 _main 中被引用
你可以看一些基本的如何配置vc路径添加对library的linker file的教程