msvc 2010 c和x2B的差异+;和gnu c++;(g+;+;-4)在OpenCV 2.4.3中 我在C++代码中有一个函数,它比较两个图像并移除静态背景(有点不真实,但适用于我的目的):
这段代码在Ubuntu和g++-4.5中的工作原理与预期完全相同,但在msvc 2010(express)中,我的前台似乎在退出此函数后就没有设置(即使它是通过引用传递的) 我运行的是64位Windows 8,但基于32位库进行编译(出于兼容性原因) 我已经在Ubuntu12中广泛地运行了这段代码,它按预期运行(前台已设置),但没有在msvc中运行。即使将前景作为指针进行传递,也似乎没有达到预期的效果msvc 2010 c和x2B的差异+;和gnu c++;(g+;+;-4)在OpenCV 2.4.3中 我在C++代码中有一个函数,它比较两个图像并移除静态背景(有点不真实,但适用于我的目的):,c++,opencv,pass-by-reference,visual-studio-2010,C++,Opencv,Pass By Reference,Visual Studio 2010,这段代码在Ubuntu和g++-4.5中的工作原理与预期完全相同,但在msvc 2010(express)中,我的前台似乎在退出此函数后就没有设置(即使它是通过引用传递的) 我运行的是64位Windows 8,但基于32位库进行编译(出于兼容性原因) 我已经在Ubuntu12中广泛地运行了这段代码,它按预期运行(前台已设置),但没有在msvc中运行。即使将前景作为指针进行传递,也似乎没有达到预期的效果 这是一个已知的怪癖、msvc的问题还是OpenCV 2.4.3的问题?您可能需要在imshow
这是一个已知的怪癖、msvc的问题还是OpenCV 2.4.3的问题?您可能需要在
imshow
之后的某个地方调用cv::waitKey
。这种情况确实会发生,只是不在这个函数中。我正在使用带有多个断点的MSVC调试器,但未设置前台数据memeber。您所说的“未设置”到底是什么意思?front.data='',其中数据类型为char*
。
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 );
}