我尝试初始化类Source_Buffer中Mat的构造函数但是我给了我一个错误" ConsoleApplication4.exe中发生了缓冲区溢出,这已经破坏了程序的内部状态。按Break打开调试程序或继续终止程序。"
# include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;
class Source_Buffer {
public:
Source_Buffer();
int run();
private:
const char* sffiename;
Mat sfsrc; // this causes error
Rect sfregion_of_interest;
};
Source_Buffer::Source_Buffer() :
sffiename("C:/ccc.jpg")
, sfsrc(imread(sffiename,0)) // and this
, sfregion_of_interest()
{
}
int Source_Buffer::run(){
cout << "test" << endl;
//Mat sfsrc = imread(sffiename, 0);
sfregion_of_interest = Rect(90, 75, 250, 250);
sfsrc = sfsrc(sfregion_of_interest);
(...)
return 0;
}
在我提取&#39; Mat sfsrc&#39;之后,它工作正常。和&#39; sffiename(&#34; C:/ccc.jpg")&#39;从类中构造函数并将它们放入main函数中。
比如Mat sfsrc = imread(sffiename, 0);
然后我想通过放置Mat sfsrc看看它是否有用;作为类成员变量的类,而不是为此调用构造函数 这就像
class Source_Buffer {
public:
Source_Buffer();
int run();
private:
const char* sffiename;
Rect sfregion_of_interest;
Mat sfsrc;
};
Source_Buffer::Source_Buffer() :
sffiename("C:/ccc.jpg")
, sfregion_of_interest()
{
}
int Source_Buffer::run(){
cout << "test" << endl;
sfsrc = imread(sffiename, 0);
sfregion_of_interest = Rect(90, 75, 250, 250);
sfsrc = sfsrc(sfregion_of_interest);
return 0;
}
开始工作。 告诉我&#34;访问冲突写入位置0x0000000000000000。&#34;猜一些空指针的东西。 我试图搜索一些[Mat在课堂上初始化]的东西,但没有什么我能找到的。 我的想法在这里出了什么问题?
#include "Source_Buffer.h"
int main()
{
try
{
cout << "(1) Start !" << endl;
Source_Buffer sfbuffer;
cout << "(2) running entrance" << endl;
//Source_Game source_game;
//source_game.runc();
sfbuffer.run();
}
catch (std::exception& e)
{
std::cout << "\nEXCEPTION: " << e.what() << std::endl;
}
return 0;
}
#pragma once
/*bridge*/
class Source_Buffer {
public:
Source_Buffer();
int run();
};