OpenCV 2.4.3中msvc 2010 c ++和gnu c ++(g ++ - 4)的差异

时间:2013-03-11 18:42:23

标签: c++ opencv pass-by-reference visual-studio-2010

我的c ++代码中有一个函数可以比较两个图像并删除一个静态背景(有点hackish,但适用于我的目的):

void Keyboard::processBackground( const cv::Mat& img, cv::Mat &foreground )
{
    cv::Mat grey, diff;

    cv::cvtColor( img, grey, CV_RGB2GRAY );

    cv::equalizeHist( grey, grey );

    if ( !initialBackground )
    {
        bg = grey.clone();
        initialBackground = true;
    }
    cv::absdiff( grey, bg, diff );
    cv::threshold( diff, foreground, 75.0, 255, cv::THRESH_BINARY );

    cv::imshow( "foreground", foreground );
    cv::imshow( "background", bg );
}

这段代码与Ubuntu中使用的g ++ - 4.5完全一样,但在msvc 2010(express)中,一旦退出此函数,我的前景似乎没有设置(即使它是通过引用传递的)。

我正在运行Windows 8 64位,但是针对32位库进行编译(出于兼容性原因)。

我已经在Ubuntu 12中广泛运行了这段代码,它按预期运行(前台已设置),但不是在msvc中运行。即使将前景作为指针传递也似乎没有按预期工作。

这是一个已知的怪癖,msvc的问题,还是OpenCV 2.4.3的问题?

0 个答案:

没有答案
相关问题