使用OpenCV的分段错误

Segmentation fault using OpenCV

本文关键字:错误 分段 OpenCV 使用      更新时间:2023-10-16

我目前正在编写我的第一个C++程序,到目前为止,即使它还不完整,我也想在处理完所有编译器错误后尝试一些测试运行。我将在以下链接中提供大部分代码:http://pastie.org/8196032http://pastie.org/8196025由于我只被允许发布2个链接,ImageComparison的标题丢失了,我认为这不是很重要。stdafx.h包括必需的opencv和std-lib。我运行了gdb,得到了这样的结果:

Program received signal SIGSEGV, Segmentation fault.
0x000000000040655c in cv::Mat::release() ()
(gdb) bt
>#0  0x000000000040655c in cv::Mat::release() ()
>#1  0x0000000000406410 in cv::Mat::operator=(cv::Mat const&) ()
>#2  0x00000000004052ed in ImageComparison::LoadImages() ()
>#3  0x000000000040518e in ImageComparison::DoImCo() ()
#4  0x0000000000405019 in main () 

这并不能让我知道这里出了什么问题。如果我的问题只是说说而已,我很抱歉,但我很感激任何建议。

行中:

vector<Mat> images;

图像[i-1]=imread("ImageData_/"+m_object_type+"/"+m_object _type+"-"+buffer+".jpeg",1) ;

您已经声明了向量images,但其大小仍然未指定。因此,不能根据索引指定其元素。相反,您可以push_back新的Mat元素:

images.push_back(imread("ImageData/"+m_object_type+"/"+m_object_type+"-"+buffer+".jpeg",1) );

或者,您可以初始化大小为m_number_of_images:的矢量images

vector<Mat> images(m_number_of_images);
char* buffer;

LoadImages中的这一行需要是一个实际的数组,或者至少是用new获得的数组。

例如:

char buffer[100];