OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 3694|回复: 0

1.0和2.0版本光流函数使用问题求助

[复制链接]
发表于 2009-12-8 17:33:49 | 显示全部楼层 |阅读模式
继上一次2.0版本的时间轴问题后,本人在使用2.0版本时发现又一新问题:
如下是2.0版本光流代码一部分:
cvCalcOpticalFlowBM( const void* srcarrA, const void* srcarrB,
                     CvSize blockSize, CvSize shiftSize,
                     CvSize maxRange, int usePrevious,
                     void* velarrx, void* velarry )
{
    CvMat stubA, *srcA = cvGetMat( srcarrA, &stubA );
    CvMat stubB, *srcB = cvGetMat( srcarrB, &stubB );

    CvMat stubx, *velx = cvGetMat( velarrx, &stubx );
    CvMat stuby, *vely = cvGetMat( velarry, &stuby );

    if( !CV_ARE_TYPES_EQ( srcA, srcB ))
        CV_Error( CV_StsUnmatchedFormats, "Source images have different formats" );

    if( !CV_ARE_TYPES_EQ( velx, vely ))
        CV_Error( CV_StsUnmatchedFormats, "Destination images have different formats" );

    CvSize velSize =
    {
        (srcA->width - blockSize.width)/shiftSize.width,
        (srcA->height - blockSize.height)/shiftSize.height
    };

    if( !CV_ARE_SIZES_EQ( srcA, srcB ) ||
        !CV_ARE_SIZES_EQ( velx, vely ) ||
        velx->width != velSize.width ||
        vely->height != velSize.height )
        CV_Error( CV_StsUnmatchedSizes, "" );
......
由于问题出现在红色部分,查看之后发现velx->width != velSize.width 成了导致cverror,查看srcA->width 的值发现为异常的值,最终追踪到CvMat stubA, *srcA = cvGetMat( srcarrA, &stubA );函数中,其中发现传入的&stubA ,还有cvGetMat返回的srcA的值都有异常,查看cvGetMat后发现该函数变化并不大,只是一些小的命名差别。

很奇怪的问题就是为何返回的值与期望的不同,为什么1.0底下光流函数运行正常。是否有朋友遇到同样的问题,如果用过2.0库中光流函数的朋友跑通的话,麻烦给我解答此问题,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-28 16:40 , Processed in 0.008795 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表