分段故障核心已转储
Segmentation fault core dumped
我正在尝试从c++创建一个json文件。使用的代码如下:
Mat projected = eigenfacesExtraction(fileName);
ofstream myfile;
myfile.open ("detection.json");
myfile << "{n";
myfile << "t "meta":{n";
myfile << "t "duration":""<<duration<<"",n";
myfile << "t "fileName":""<<fileName<<""n";
myfile << "},n";
myfile << "t "num_of_people":""<< faces.size()<<"",n";
myfile << "t "faces":[n";
myfile << "t "projected":[" << projected.size <<"] ,n";
for(int i=0; i<faces.size(); i++){
if(!faces.empty()){
if(i!= faces.size()-1){
myfile << "t "coord":" t[" << faces[i].x << ", "<<faces[i].y<< ", "<< faces[i].width << ", "<<faces[i].height<<"],n";
myfile << "t "descr":" t[" << projected.at<double>(0,1) << ", "<<projected.at<double>(0,2)<< ", "<< projected.at<double>(0,3) << ", "<<projected.at<double>(0,4)<<"],n";
}
else myfile << "t "coord":" t[" << faces[i].x << ", "<<faces[i].y<< ", "<< faces[i].width << ", "<<faces[i].height<<"]n";
myfile << "t "descr":" t[" << projected.at<double>(0,1) << ", "<<projected.at<double>(0,2)<< ", "<< projected.at<double>(0,3)<< ", "<<projected.at<double>(0,4)<<"],n";
}
}
myfile << "]n";
myfile << "}";
myfile.close();
cout<< "Detection process exits...."<<endl;
//imwrite( "/opencvAssets/results/"+fileName, image );
imwrite("outputCapture.jpeg", image);
//waitKey(0);
//imshow("cropped image", croppedFaceImage);
我的程序运行良好,json文件存储正确,并打印消息,但我收到以下消息"Segmentation fault(core dumped)"。当我注释出iwrite命令时,json和cout都不起作用,我再次收到相同的消息。这里出了什么事??本征面提取函数(可能导致问题)如下:
Mat Detection::eigenfacesExtraction(string fileName){
Ptr<FaceRecognizer> model = createEigenFaceRecognizer();
model->load("eigenfaces.yml"); // Load eigenfaces parameters
Mat eigenvalues = model->getMat("eigenvalues"); // Eigen values of PCA
Mat convMat = model->getMat("eigenvectors"); //Convariance matrix which contains eigenvectors
Mat mean = model->getMat("mean"); // Mean value
convMat.convertTo(convMat, CV_32F);
mean.convertTo(mean, CV_32F);
string path = fileName;
Mat sample ,pca_ed_sample, resizedSample;
sample = imread(path, CV_LOAD_IMAGE_GRAYSCALE);
sample.convertTo(sample, CV_32F);
resize(sample,resizedSample,Size(60,60),0,0,INTER_LINEAR);
Mat nu = resizedSample.reshape(1,3600).t();
pca_ed_sample = (nu-mean)*(convMat);
return pca_ed_sample;
}
当我们试图只更改可读内存或试图访问超出程序边界的内存时,会发生分段错误。将它放在调试器中并彻底跟踪它。欲了解更多信息,请查看此堆叠式问题
什么是分段错误?
相关文章:
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 我不知道为什么这段代码会让核心被转储?
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- 访问std::list元素将转储核心
- 使用SIGSEGV或SIGABRT信号转储核心并终止进程
- Eclipse (C++) 崩溃 无法写入核心转储.核心转储已被禁用
- 已终止(转储核心)
- 转储核心时拍摄堆快照的时间
- 读取字符串时转储核心
- 当main函数返回时转储核心
- 是否可以转储核心但不退出进程
- 在尝试libssh身份验证时转储核心