对PTgrey的camera编程


对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太大。

Advertisement

10 thoughts on “对PTgrey的camera编程

  1. Feng

    令人郁闷的事情终究还是发生了,把调好的程序放到server上就又不行了,明天接着来。实在不行就只能问ptgrey的support了。

    Reply
  2. Feng

    被ptgrey fool了一把,原来那些FLYCAPTURE_BGR是可以用的,但是view类最终显示时将bmpheader中的biBitCount定义为32位,所以就只能用FLYCAPTURE_BGRU了。faint啊。。。

    Reply
  3. Feng

    今天把viewer的显示频率降到7.5Hz后,连6个camera都没有out of sync和掉桢,不错。。

    Reply
  4. 天宇

    Hi/Andy/
    請問你用的是ptgrey的哪一款Camera呀/
    還有你是否用artoolkit呢/
    能不能告訴我一下你的e-mail/謝謝/

    Reply
  5. sonia

    你好,
    我也刚买了个ptgrey flea2 1024×768 color camera,需要用软件触发初始化相机并保存一帧图像成Jpg或者Bmp格式,有什么程序能不能指导一下啊,第一次用……邮箱soniabubu@163.com

    Reply
    1. fli10 Post author

      安装完ptgrey的driver后,里面有个src目录,提供了很多使用相机基本功能的source code。你可以看看。

      Reply
  6. sonia

    你好,
    再问一个问题,呵呵,编译出现这种情况是怎么回事……
    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 中被引用

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s