我想在Windows窗体中使用OpenCV。我创建了一个全局cv :: Mat对象,并期望该对象可供其他函数使用。但是,每次我初始化全局cv :: Mat对象并退出/返回函数时,我的全局cv :: Mat对象的值将会自动更改,原因不明。OpenCV和C++:全局cv :: Mat对象返回错误的值
一个示例代码段是这样的:
private: cv::Mat *cvImage;
出于某种原因,我创建了一个函数调用的解码(),它返回CV ::垫。
void copy(){cvImage = &decode();}
cvImage无法通过上述代码获取正确的值。通常是数据,数据结束,数据限制,数据存储和行是0或意外的值。
即使我尝试使用局部变量cv :: Mat img来完成所有操作,然后运行cvImage = &img;
,只要函数退出或返回,cvImage的值也会意外更改。
我想知道为什么会发生这种情况?
我想到了你的方式,但cv :: Mat cvImage;不能用作全局变量,因为它会说“混合类型不受支持”。同时编译。使其定义为指针的唯一方法。 – Novfrank 2013-03-28 12:02:20
那你的“混合型”是什么?我确定,它是一种避免它的方法 – berak 2013-03-28 13:10:23
我不确定,但它给了我一个错误:“d:\ ImageProcess \ Form1.h(109):错误C4368:无法将'cvImage'定义为托管成员'ImageProcess :: Form1':不支持混合类型“每当我使用private编译:cv :: Mat cvImage;作为全局变量。 – Novfrank 2013-03-28 13:33:37